繁体   English   中英

将目录添加到sys.path / PYTHONPATH

[英]adding directory to sys.path /PYTHONPATH

我正在尝试从特定目录导入模块。

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

有人可以解释为什么发生这种情况,给我一个解决添加mod_directory的开始,一个python脚本里面

这是有记录的。 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

至于我,我需要caffe到我的python路径。 我可以通过add添加它的文件/home/xy/.bashrc的路径

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

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

但是当我使用pycharm时,路径仍未进入。

所以我可以通过run - > edit Configuration添加PYTHONPATH变量的路径。

在此输入图像描述

暂时改变目录适用于导入:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM