在我的 CentOS5 服务器上,我有 Python2.4 和 2.6(yum 需要 2.4 才能工作)。我不确定发生了什么,但是每次我尝试运行一个模块被加载到 2.4 site-packages 目录中的文件时,系统突然变得非常混乱。我检查了 PYTHONPATH/sys.path ,看起来一切都被 2.6 环境数据覆盖了。
它以前不这样做。我只是在脚本开头的 shebang 语句中声明了 /usr/bin/python 或 /usr/bin/python26 ,它总能找到正确的模块。
有没有办法让 PYTHONPATH 变量动态并根据正在运行的 python 解释器加载不同的路径?
否则,我将不得不手动编辑每个应用程序中的路径,这似乎有点矫枉过正。
它是在安装 web.py 之后开始的(顺便说一句,我喜欢它)。
回溯:正如下面有人评论的那样,我将此程序的 shebang 更改为 #!/usr/bin/env python:
Traceback (most recent call last):
File "/usr/bin/linkchecker", line 24, in ?
import codecs
File "/usr/lib/python2.6/codecs.py", line 268
return (b"", 0)
^
另一个例子,尝试使用 yum:
Traceback (most recent call last):
File "/usr/bin/yum", line 5, in ?
import yum
File "/usr/lib/python2.4/site-packages/yum/__init__.py", line 21, in ?
import os
File "/usr/lib/python2.6/os.py", line 758
bs = b""
^
我注意到一些程序没有被 b"" 语法混淆,它们都是使用 2.4 的程序,出于某种原因使用 2.6。如果我尝试让程序使用 2.6 解释器,它能够理解该语法,但是找不到任何其他模块(位于 2.4 站点包目录中)。
我不知道那个语法是什么,因为它们被写入了我从 sourceforge 获得的模块中,但是它们上周正在工作。我不确定发生了什么变化。
谢谢,汤姆