2012-03-05 72 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