永久添加一个目录到PYTHONPATH

每当我使用sys.path.append ,新的目录将被添加。 但是,一旦我closurespython,列表将恢复到以前的(默认值?)值。 我如何永久地添加一个目录到PYTHONPATH?

您需要将您的新目录添加到环境variablesPYTHONPATH ,用前面的内容分隔冒号。 在任何forms的Unix中,你都可以使用一个适合于你正在使用的shell的启动脚本( .profile或其他,取决于你最喜欢的shell)来执行这个命令。 在Windows中,您可以通过系统GUI来达到此目的。

superuser.com可能是一个更好的地方,如果你需要关于如何在你select的平台和shell中丰富一个环境variables的更多细节,因为它本身不是一个真正的编程问题。

如果您使用的是bash(在Mac或GNU / Linux发行版中),请将其添加到~/.bashrc

 export PYTHONPATH="${PYTHONPATH}:/my/other/path" 

您也可以创build一个pathconfiguration文件,而不是操纵PYTHONPATH 。 首先找出Pythonsearch这个信息的目录:

 python -m site --user-site 

由于某种原因,这在Python 2.7中似乎不起作用。 在那里你可以使用:

 python -c 'import site; site._script()' --user-site 

然后在该目录中创build一个包含要添加的path的.pth文件(如果目录不存在,则创build该目录)。

例如:

 # find directory SITEDIR=$(python -m site --user-site) # create if it doesn't exist mkdir -p "$SITEDIR" # create new .pth file with our path echo "$HOME/foo/bar" > "$SITEDIR/somelib.pth" 

如果任何人仍然感到困惑 – 如果您在Mac上,请执行以下操作:

  1. 打开terminal
  2. inputopen .bash_profile
  3. 在popup的文本文件中,在末尾添加以下行: export PYTHONPATH=$PYTHONPATH:foo/bar
  4. 保存文件,重新启动terminal,你就完成了

这在Windows上工作

  1. 在Windows上,使用Python 2.7转到Python安装文件夹。
  2. 打开Lib / site-packages。
  3. 将example.pth的空文件添加到此文件夹中。
  4. 将所需的path添加到文件,每行一个。

然后,您将能够从脚本中查看这些path中的所有模块。

你可以通过你的pythonrc文件添加path,默认是linux下的〜/ .pythonrc。 即。

 import sys sys.path.append('/path/to/dir') 

你也可以在全局的rc文件中设置PYTHONPATH环境variables,比如mac或者linux上的~/.profile ,或者通过控制面板 – >系统 – >高级选项卡 – > Windows环境variables。

在linux上,你可以创build一个从包到PYTHONPATH的目录的符号链接,而不必处理环境variables。 就像是:

 ln -s /your/path /usr/lib/pymodules/python2.7/ 

对我来说,它改变了.bash_profile文件。 只是改变.bashrc文件,直到我重新启动壳。

对于Python 2.7,它应该看起来像:

 export PYTHONPATH="$PYTHONPATH:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python" 

.bash_profile文件的末尾。

只要添加awesomo的答案,您也可以将该行添加到~/.bash_profile~/.profile

为了给出更多的解释,Python将使用site.py脚本(通常位于sys.prefix + lib/python<version>/site-packages以及lib/site-python自动构build其searchpath(如上面和上面提到的那样) lib/site-python )。 可以获取sys.prefix的值:

 python -c 'import sys; print(sys.prefix)' 

然后,site.py脚本会添加一些依赖于平台的目录,例如/usr/{lib,share}/python<version>/dist-packages/usr/local/lib/python<version>/dist-packages到searchpath,还search这些path的<package>.pthconfiguration文件,其中包含特定的附加searchpath。 例如, 易安装维护它的已安装软件包的集合,这些软件包被添加到系统特定的文件中,例如在Ubuntu上它是/usr/local/lib/python2.7/dist-packages/easy-install.pth 。 在一个典型的系统中,有一堆这些.pth文件可以解释sys.path中的一些意外path:

 python -c 'import sys; print(sys.path)' 

所以你可以创build一个.pth文件并将其放入这些目录(包括上面提到的sitedir)。 这似乎是大多数包被添加到sys.path的方式,而不是使用PYTHONPATH。

注意:在OSX上有一个特殊的附加searchpath,通过site.py为'framework builds'添加(但似乎适用于python的普通命令行): /Library/Python/<version>/site-packages (例如Python2 .7: /Library/Python/2.7/site-packages/ )这是第三方软件包的安装位置(请参阅该目录中的自述文件)。 所以可以在其中添加一个pathconfiguration文件,其中包含额外的searchpath,例如创build一个名为/Library/Python/2.7/site-packages/pip-usr-local.pth的文件,其中包含/usr/local/lib/python2.7/site-packages/然后系统python将添加searchpath。

我在Windows Vista,Python 3.5中永久添加

系统>控制面板>高级系统设置>高级(点击)环境variables>系统variables>(如果在variables列中没有看到PYTHONPATH)(单击)新build>variables名称:PYTHONPATH>variables值:

请在variables值中写入目录。 这是蓝辣椒答案的细节。