除非在特定目录中启动,否则 python 不会加载模块

标签 python opencv ld pythonpath

我刚刚从源代码中提取了最新版本的 opencv,不幸的是目前我必须在一台机器上安装 2 个不同的版本。

所以我有旧版本的默认位置 /usr/local/... 和新版本的自定义位置。

我的问题是,如果我打开一个 python 终端并尝试 import cv2,如果我从 opencv/lib 开始,我只能加载新版本新版本目录。

我希望能够切换我使用的 opencv 版本,理想情况下它会在 python 脚本本身中。

我希望能够在终端中设置 LD_LIBRARY_PATHPYTHONPATH 或两者,或者使用 os.environ 更改环境变量, 但没有成功。

首先,我不明白为什么我必须在 lib 目录中才能加载新版本,其次我不明白为什么我不能动态更改 python 查找的位置使用环境变量导入模块。

感谢任何帮助。

最佳答案

您可以使用imp 模块从指定路径导入。

import imp
fp, pathname, description = imp.find_module('cv2', ['/path/to/opencv/'])
cv2 = imp.load_module('cv2', fp, pathname, description)

http://docs.python.org/library/imp.html

关于除非在特定目录中启动,否则 python 不会加载模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11641655/

相关文章:

c - GNU 链接器、-l 标志和隐式规则

c++ - Segfault声明类型为vector <shared_ptr <int >>的变量

python - 在可以返回不同类型参数的函数中使用类型提示是否有意义?

Python:将值列表分成 x 个部分,并为 x 中的每个值赋予一个变量

python - Tensorflow 模型的性能明显低于 Keras 模型

c++ - Opencv中的场景文本检测

python - 断言 'GDK_IS_DISPLAY (display)' 失败 - 无法确定以下参数 : data 的类型

python - 在python中将2d数组读入3d数组

c++ - 如何从相机矩阵中找到焦距?

linux - 静态与动态链接冲突和重复