我已經在$ HOME/local中安裝了Python 2.6.7,該機器在/ usr中已經有一個默認Python(我沒有在這臺機器上的管理員權限)。默認的Python編譯爲32位,我的本地安裝是64位。由於某些未知原因,我的本地Python庫(我在C程序中稱爲嵌入式Python解釋器)在缺省(錯誤)安裝中搜索模塊。在一個錯誤的目錄中嵌入Python搜索模塊
這是「進口隨機」
Traceback (most recent call last):
File "test.py", line 3, in <module>
import random
File "/tmp/work/mdorier1/local/lib/python2.6/random.py", line 45, in <module>
from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil
ImportError: /usr/lib/python2.6/lib-dynload/math.so: wrong ELF class: ELFCLASS32
正如你所看到的,在import語句正確本地安裝的Python搜索「random.py」的結果,但在random.py import語句去搜索math.so在錯誤的位置,由於默認位置有32位模塊,錯誤以錯誤結束。
我猜有使用環境變量的問題,我試圖
import sys
sys.path
得到
['/tmp/work/mdorier1/local/lib/python26.zip',
'/tmp/work/mdorier1/local/lib/python2.6',
'/tmp/work/mdorier1/local/lib/python2.6/plat-linux2',
'/tmp/work/mdorier1/local/lib/python2.6/lib-tk',
'/tmp/work/mdorier1/local/lib/python2.6/lib-old',
'/usr/lib/python2.6/lib-dynload',
'/tmp/work/mdorier1/local/lib/python2.6/site-packages']
我注意到,在路徑確實指向Python中的默認安裝。因此我的問題是: - 爲什麼這個路徑顯示在這裏,因爲本地安裝與默認路徑無關? - 如何更改(以乾淨和永久的方式)?該路徑應該是本地安裝中lib-dynload的路徑。
感謝
注意:在調用我的程序之前使用PYTHONHOME =/tmp/work/mdorier1/local實際上可行,但我仍然很想知道爲什麼這個默認位置顯示並以正確的方式更改它。 – sunmat 2012-03-05 15:11:12