我已经在一台机器的$ 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的路径。
由于
答案 0 :(得分:1)
您可能在系统Python之前的PATH变量中没有Python的bin目录。
或许您只是错误地编译了Python并且没有使用:
./configure --prefix=/tmp/work/mdorier1/local
所以现在它认为它的文件在其他地方。