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

时间:2012-07-25 01:59:01

标签: python opencv ld pythonpath

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

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

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

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

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

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

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用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

答案 1 :(得分:0)

使用sys模块。启动Python解释器后,您可以通过sys.path修改模块路径,该路径实际上只是一个列表。

import sys
sys.path.append("/path/to/cv2")