将目录添加到 sys.path/PYTHONPATH

我试图从一个特定的目录导入一个模块。

问题是,如果我使用 sys.path.append(mod_directory)追加路径,然后打开 python 解释器,目录 mod_directory将被添加到列表 sys.path 的末尾。如果在打开 python 解释器之前导出 PYTHONPATH变量,目录将被添加到列表的开头。在后一种情况下,我可以导入模块,但在前一种情况下,我不能。

谁能解释一下为什么会发生这种情况,并给我一个解决方案来添加 mod_directory到开始,在里面一个 Python 脚本?

410827 次浏览

这是按照文件记录的。任何在 PYTHONPATH中指定的路径都被记录在正常的工作目录之后,但是在标准解释器提供的路径之前。sys.path.append()附加到现有路径。参见 给你给你。如果希望某个特定目录排在第一位,只需将其插入到 sys.path 的头部:

import sys
sys.path.insert(0,'/path/to/mod_directory')

也就是说,通常有比使用 PYTHONPATH或直接操纵 sys.path更好的方法来管理导入。例如,请看 这个问题的答案。

你可以用:

import os
path = 'the path you want'
os.environ['PATH'] += ':'+path

临时更改目录对于导入非常有效:

cwd = os.getcwd()
os.chdir(<module_path>)
import <module>
os.chdir(cwd)

在 Windows 下从 Powershell 运行 Python 脚本时,这应该可以工作:

$pathToSourceRoot = "C:/Users/Steve/YourCode"
$env:PYTHONPATH = "$($pathToSourceRoot);$($pathToSourceRoot)/subdirs_if_required"


# Now run the actual script
python your_script.py

至于我,我需要咖啡因到我的 Python 路径。我可以添加它的路径到文件 加法 /home/xy/.bashrc

export PYTHONPATH=/home/xy/caffe-master/python:$PYTHONPATH.

我的 /home/xy/.bashrc文件。

但是当我使用魅术的时候,道路还是不在里面。

因此,我可以添加路径到 PYTHONPATH变量,通过运行-> 编辑配置。

enter image description here