2012-07-25 38 views
1

我剛從源代碼中提取最新版本的opencv,不幸的是,現在我必須在一臺機器上安裝2個不同的版本。python不會加載模塊,除非在特定目錄中啓動

因此,我有默認位置/usr/local/...舊版本和新版本的自定義位置。

我的問題是,如果我打開一個python終端並嘗試import cv2,我只能從新版本的opencv/lib目錄開始加載新版本。

我希望能夠切換使用哪種版本的opencv,理想情況下它將在python腳本中。

我希望能夠設置或者LD_LIBRARY_PATH或終端PYTHONPATH或兩者,或更改使用os.environ環境變量,但沒有成功。

首先,我不明白爲什麼我必須在lib目錄中才能加載新版本,第二我不明白爲什麼我不能動態更改python使用環境變量導入模塊的位置。

任何幫助表示讚賞。

+0

你有沒有嘗試過這樣的:http://stackoverflow.com/a/10859845/1134940 – 2012-07-28 06:04:44

+0

感謝我想象中的一樣技術將工作對我來說,即使我在Linux中我的工作。訣竅是我現在可能不想覆蓋舊版本,所以我希望能夠在腳本中切換。 'imp'做了我想要的,但是當我想遷移好時,我會嘗試你的技術 – phil0stine 2012-07-30 01:16:15

回答

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

+0

聽起來像這個應該做的伎倆。一旦我確認它可以正常工作,我會確定並解決問題。謝謝! – phil0stine 2012-07-25 02:52:29

0

使用sys模塊。 Python解釋器啓動後,您可以通過sys.path修改模塊路徑,這實際上只是一個列表。

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

可能需要在sys.path中的「/ usr/local」之前放置「path/to/cvs2」。 – mhawke 2012-07-25 02:28:33

+0

謝謝,不幸的是我試圖做'sys.path.append(pathname)'和'sys.path.insert(0,pathname)'沒有運氣。這就是爲什麼我如此困惑以至於問題是什麼,以及爲什麼這個解決方案不起作用。 – phil0stine 2012-07-25 02:50:44