问题:将目录添加到sys.path / PYTHONPATH
我正在尝试从特定目录导入模块。
问题是,如果我使用sys.path.append(mod_directory)
追加路径然后打开python解释器,该目录mod_directory
将添加到列表sys.path的末尾。如果我PYTHONPATH
在打开python解释器之前导出变量,则目录将添加到列表的开头。在后一种情况下,我可以导入模块,但是在前一种情况下,我不能。
有人可以解释为什么会发生这种情况,并给我一个在 python脚本中将其添加mod_directory
到开始的解决方案吗?
回答 0
如文档所述,这正在工作。PYTHONPATH
文件中指定的所有路径通常在工作目录之后但在标准解释器提供的路径之前记录。 sys.path.append()
追加到现有路径。看到这里和这里。如果要让特定目录优先出现,只需将其插入sys.path的开头即可:
import sys
sys.path.insert(0,'/path/to/mod_directory')
就是说,通常有比直接使用PYTHONPATH
或操纵更好的方法来管理进口sys.path
。例如,请参阅此问题的答案。
回答 1
您可以使用:
import os
path = 'the path you want'
os.environ['PATH'] += ':'+path
回答 2
对于我来说,我需要了解我的python路径。我可以将它的路径添加到该文件
/home/xy/.bashrc
由add
export PYTHONPATH=/home/xy/caffe-master/python:$PYTHONPATH
。
到我的/home/xy/.bashrc
文件。
但是当我使用pycharm时,路径仍然不在。
因此,我可以PYTHONPATH
通过运行->编辑配置将路径添加到变量。
回答 3
临时更改目录可以很好地导入:
cwd = os.getcwd()
os.chdir(<module_path>)
import <module>
os.chdir(cwd)
回答 4
在Windows下从Powershell运行Python脚本时,这应该可以工作:
$pathToSourceRoot = "C:/Users/Steve/YourCode"
$env:PYTHONPATH = "$($pathToSourceRoot);$($pathToSourceRoot)/subdirs_if_required"
# Now run the actual script
python your_script.py
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。