嵌入式Python搜索模块位于错误的目录中

时间:2012-03-05 14:52:28

标签: python python-module

我已经在一台机器的$ HOME / local中安装了Python 2.6.7,这台机器已经在/ usr中有一个默认的Python(我在这台机器上没有管理员权限)。默认的Python编译为32位,本地安装是64位。由于某些未知原因,我的本地Python库(我在C程序中称为嵌入式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的路径。

由于

1 个答案:

答案 0 :(得分:1)

您可能在系统Python之前的PATH变量中没有Python的bin目录。

或许您只是错误地编译了Python并且没有使用:

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

所以现在它认为它的文件在其他地方。