2012-03-05 49 views
0

我已經在$ 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的路徑。

感謝

+0

注意:在調用我的程序之前使用PYTHONHOME =/tmp/work/mdorier1/local實際上可行,但我仍然很想知道爲什麼這個默認位置顯示並以正確的方式更改它。 – sunmat 2012-03-05 15:11:12

回答

1

你可能不繫統的Python之前在PATH變量的Python的bin目錄。

或者,也許你只是編譯你的Python錯誤,並沒有使用:

./configure --prefix=/tmp/work/mdorier1/local 

所以現在它認爲它的文件是在別處。

+0

是的,PATH包含Python的默認版本,但不是我的:我打電話給我的完整路徑。所以我想這是原因。謝謝。 – sunmat 2012-03-05 15:55:12