Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将目录添加到sys.path/PYTHONPATH_Python_Mechanize_Python Import_Pythonpath - Fatal编程技术网

将目录添加到sys.path/PYTHONPATH

将目录添加到sys.path/PYTHONPATH,python,mechanize,python-import,pythonpath,Python,Mechanize,Python Import,Pythonpath,我正在尝试从特定目录导入模块 问题是,如果我使用sys.path.append(mod_目录)来追加路径,然后打开python解释器,那么目录mod_目录会添加到sys.path列表的末尾。如果在打开python解释器之前导出PYTHONPATH变量,则目录将添加到列表的开头。在后一种情况下,我可以导入模块,但在前一种情况下,我不能 有谁能解释一下为什么会发生这种情况,并给我一个解决方案,在python脚本的开头添加mod_目录。在PYTHONPATH中指定的任何路径通常记录在工作目录之后,但在

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

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


有谁能解释一下为什么会发生这种情况,并给我一个解决方案,在python脚本的开头添加
mod_目录
。在
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

临时更改DIR对于导入很有效:

cwd = os.getcwd()
os.chdir(<module_path>)
import <module>
os.chdir(cwd)
cwd=os.getcwd()
os.chdir()
进口
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

对于我来说,我需要将caffe转换到我的python路径。我可以将它的路径添加到文件中
/home/xy/.bashrc
通过添加

导出PYTHONPATH=/home/xy/caffe master/python:$PYTHONPATH

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

但当我使用pycharm时,路径仍然不在

所以我可以通过运行->编辑配置向
PYTHONPATH
变量添加路径


谢谢您的回复。问题是,我没有意识到,要添加打包为.egg文件的模块,必须包含文件名,而不仅仅是Python2.6Hey伙计中的目录,这破坏了我的django。你确定你想让人们把它放在最上面吗@RClaven,对不起,很难说你指的是什么行动和结果:“把它放在顶端”和“打破我的django”不是很准确。你能详细说明一下吗?只是一个旁注:
sys.path
和任何列表一样都是零索引的,所以它应该是
sys.path.insert(0,/path/to/mod_directory')
你真的应该使用“1”而不是“0”!否则你会崩溃。另请参阅。我已经尝试过。最简单的是最好的答案,添加此项用于开发将使自动完成工作。我已更新了.bashrc,如上所述,但未反映在jupyter笔记本中。Jupyter笔记本仍然显示未找到模块。您需要“;”在窗户里。