永久添加一个目录到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上,请执行以下操作:
- 打开terminal
- input
open .bash_profile
- 在popup的文本文件中,在末尾添加以下行:
export PYTHONPATH=$PYTHONPATH:foo/bar
- 保存文件,重新启动terminal,你就完成了
这在Windows上工作
- 在Windows上,使用Python 2.7转到Python安装文件夹。
- 打开Lib / site-packages。
- 将example.pth的空文件添加到此文件夹中。
- 将所需的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>.pth
configuration文件,其中包含特定的附加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值中写入目录。 这是蓝辣椒答案的细节。