【发布时间】:2011-03-07 16:51:01
【问题描述】:
我知道如何在我的 /etc/profile 和我的环境变量中设置它。
但是如果我想在脚本中设置它怎么办? 是导入操作系统,系统吗?我该怎么做?
【问题讨论】:
标签: python linux unix environment-variables
我知道如何在我的 /etc/profile 和我的环境变量中设置它。
但是如果我想在脚本中设置它怎么办? 是导入操作系统,系统吗?我该怎么做?
【问题讨论】:
标签: python linux unix environment-variables
您没有设置PYTHONPATH,而是将条目添加到sys.path。它是一个应搜索 Python 包的目录列表,因此您只需将目录附加到该列表即可。
sys.path.append('/path/to/whatever')
实际上,sys.path 是通过在路径分隔符上拆分 PYTHONPATH 的值来初始化的(在类似 Linux 的系统上是 :,在 Windows 上是 ;)。
您还可以使用site.addsitedir 添加目录,该方法还将考虑您传递的目录中存在的.pth 文件。 (您在PYTHONPATH 中指定的目录不会出现这种情况。)
【讨论】:
sys.path.insert(0, '/path/to/whatever')。
您可以通过os.environ获取和设置环境变量:
import os
user_home = os.environ["HOME"]
os.environ["PYTHONPATH"] = "..."
但是由于您的解释器已经在运行,这将不起作用。你最好使用
import sys
sys.path.append("...")
这是您的PYTHONPATH 在解释器启动时将转换为的数组。
【讨论】:
PYTHONPATH 以 sys.path 结尾,您可以在运行时对其进行修改。
import sys
sys.path += ["whatever"]
【讨论】:
如果您输入sys.path.append('dir/to/path') 而不检查它是否已经添加,您可以在sys.path 中生成一个长列表。为此,我建议这样做:
import sys
import os # if you want this directory
try:
sys.path.index('/dir/path') # Or os.getcwd() for this directory
except ValueError:
sys.path.append('/dir/path') # Or os.getcwd() for this directory
【讨论】:
可以通过os.environ['PATHPYTHON']=/some/path设置PYTHONPATH,然后需要调用os.system('python')重启python shell,使新添加的路径生效。
【讨论】:
os.system() 不会“重新启动 python shell”,它会启动一个新的交互式 Python 实例。当你从那里返回时,你又回到了调用脚本中。
我在 linux 下也可以:
import sys
sys.path.extend(["/path/to/dotpy/file/"])
【讨论】:
extend 与路径一起用作列表中的单个元素与将append 与实际路径本身一起使用没有什么不同。这个答案没有提供比当前接受的答案更多的用处。