gpt4 book ai didi

PYTHONPATH - 不同 python 安装的动态?

转载 作者:太空宇宙 更新时间:2023-11-04 01:38:18 24 4
gpt4 key购买 nike

在我的 CentOS5 服务器上,我有 Python2.4 和 2.6(yum 需要 2.4 才能工作)。我不确定发生了什么,但每次我尝试运行其模块加载到 2.4 站点包目录中的文件时,系统突然变得非常困惑。我检查了 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 获得的模块中,但是它们在上周工作。我不确定发生了什么变化。

谢谢,汤姆

最佳答案

首先,使用 virtualenv 来隔离多个 Python 安装的包。您的大部分问题都会立即消失。

其次,正如 Ibp 在他的回答中所建议的那样,更改 shebang 行以使用“当前事件的”python 二进制文件,以便它可以跨多个解释器工作。

关于PYTHONPATH - 不同 python 安装的动态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7638886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com