sys.path.append
时,新目录都会被添加。然而,一旦我关闭python,列表将恢复到以前(默认?)的值。如何永久地将一个目录添加到PYTHONPATH
中?sys.path.append
时,新目录都会被添加。然而,一旦我关闭python,列表将恢复到以前(默认?)的值。如何永久地将一个目录添加到PYTHONPATH
中?如果你正在使用bash(在Mac或GNU/Linux发行版上),请将以下内容添加到您的~/.bashrc
文件中:
export PYTHONPATH="${PYTHONPATH}:/my/other/path"
PYTHONPATH
中,与先前的内容以冒号分隔。在任何形式的Unix中,您可以通过启动脚本完成此操作,该脚本适用于您正在使用的任何shell(例如.profile
等,具体取决于您喜欢的shell),命令取决于所涉及的shell。在Windows中,您可以通过系统GUI来完成此操作。superuser.com
获取更多信息,因为这不是一个真正的编程问题。除了操作 PYTHONPATH
,您还可以创建一个路径配置文件。首先找出 Python 搜索此信息的目录:
python -m site --user-site
由于某些原因,这在Python 2.7中似乎不起作用。您可以使用以下代码:
python -c 'import site; site._script()' --user-site
然后在该目录中创建一个.pth
文件,其中包含您想要添加的路径(如果不存在,请创建该目录)。
例如:
# 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"
python -m site --user-site
和 (如果不存在则创建目录)
部分是我缺失的,让它能够正常工作。 - Mmmh mmhsomelib.pth
的路径吗?如果不需要,你有什么猜测为什么这可能无法正常工作? - Miladiouss这适用于Windows操作系统
然后您就可以从脚本中访问这些路径下的所有模块了。
如果有人还感到困惑,如果您使用的是Mac,请按照以下步骤操作:
open .bash_profile
export PYTHONPATH=$PYTHONPATH:foo/bar
export
关键字!!!已点赞,非常感谢! - amdev你可以通过编辑pythonrc文件来添加路径,该文件在Linux上默认为~/.pythonrc。例如:
import sys
sys.path.append('/path/to/dir')
你也可以设置PYTHONPATH
环境变量,可以在全局RC文件中设置,例如mac或linux下的~/.profile
,或者通过控制面板 ->系统->高级选项卡->环境变量来设置Windows。
site.py
脚本(通常位于sys.prefix + lib/python<version>/site-packages
以及lib/site-python
,如上所述above和here)构建其搜索路径。可以获取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
等。同时,它还会在这些路径中搜索包含特定附加搜索路径的<package>.pth
配置文件。例如,easy-install维护了其安装包的集合,这些包被添加到系统特定的文件中,例如在Ubuntu上,它是/usr/local/lib/python2.7/dist-packages/easy-install.pth
。在典型的系统中,有很多这样的.pth文件,这可以解释sys.path中一些意外的路径。
python -c 'import sys; print(sys.path)'
因此,可以创建一个.pth文件并将其放在这些目录中的任何一个(包括上面提到的 sitedir)中。这似乎是大多数软件包被添加到sys.path的方式,而不是使用PYTHONPATH。
注意:在OSX上,site.py会为“框架构建”添加特殊的附加搜索路径(但似乎适用于正常的python命令行使用):/Library/Python/<version>/site-packages
(例如,对于Python2.7:/Library/Python/2.7/site-packages/
),其中第三方软件包应该被安装(请参见该目录中的README)。因此,可以在其中添加一个路径配置文件,其中包含其他搜索路径,例如创建一个名为/Library/Python/2.7/site-packages/pip-usr-local.pth
的文件,其中包含/usr/local/lib/python2.7/site-packages/
,然后系统python将添加该搜索路径。
~/.bash_profile
让我开心了,例如:
export PYTHONPATH="${PYTHONPATH}:/Users/<myuser>/project_root_folder_path"
执行以下操作:
source ~/.bash_profile
当我更改.bash_profile
文件时,它对我起作用了。仅更改.bashrc
文件只有在重新启动Shell之前才能工作。
对于Python 2.7,它应该看起来像:
export PYTHONPATH="$PYTHONPATH:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python"
在.bash_profile
文件的末尾。
ln -s /your/path /usr/lib/pymodules/python2.7/
~/.bashrc
文件后,记得运行source ~/.bashrc
命令以使修改生效。详情请参考https://dev59.com/tnE85IYBdhLWcg3w_Itr。 - b_devsudo su
是一个不好的主意。这篇文章也同意我的看法。至少在我的系统上,这甚至都不是必要的。 - LondonRob