我已经在$ 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