将目录添加到sys.path/PYTHONPATH

Una*_*ion 115 python mechanize python-import pythonpath

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

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

有人可以解释为什么会这样,并给我一个解决方案mod_directory, python脚本中添加到开头?

Ned*_*ily 158

这是有记录的.指定的任何路径PYTHONPATH都记录为通常位于工作目录之后但在标准解释器提供的路径之前. sys.path.append()附加到现有的路径.看到这里这里.如果您希望首先使用特定目录,只需将其插入sys.path的头部:

import sys
sys.path.insert(0,'/path/to/mod_directory')
Run Code Online (Sandbox Code Playgroud)

也就是说,管理进口通常比直接使用PYTHONPATH或操纵更好sys.path.例如,请参阅此问题的答案.

  • @RClaven,对不起,很难说你指的是什么动作和结果:"把它放在顶部"和"打破我的django"不是很精确.你能详细说说吗? (14认同)
  • 你真的应该使用“1”而不是“0”!否则你会破坏 [sys.path](https://docs.python.org/3/library/sys.html#sys.path)。另请参阅 http://stackoverflow.com/q/10095037/125507。 (4认同)
  • 嘿,这个打破了我的django.你确定要告诉别人把它放在最顶层吗?!?!!? (2认同)
  • 只是一个旁注:`sys.path` 是零索引的任何列表,所以它应该是 `sys.path.insert(0, '/path/to/mod_directory')` (2认同)

Jay*_*llo 8

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

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

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

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

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

在此处输入图片说明


Δημ*_*πάς 5

您可以使用:

import os
path = 'the path you want'
os.environ['PATH'] += ':'+path
Run Code Online (Sandbox Code Playgroud)

  • 你需要 ';' 在窗户中。 (4认同)