在PYTHONPATH中到底应该设置什么?

2024-09-28 17:26:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一个python项目的其他开发人员编写一个安装文档,我一直在阅读PYTHONPATH环境变量。我正在查看我当前的开发系统,并认为我有一些设置错误的地方,导致我的IDE(IntelliJ)在查找python库时行为不正确。

我查看了文档herehere,仍然不确定PYTHONPATH环境变量中实际应该包含什么。

我把PYTHONHOME指向“C:\ Python27”。

我当前的PYTHONPATH设置为PYTHONHOME。我还应该添加来自sys.path的目录吗?

更新:

基于以下信息,PYTHONPATH不需要设置,除非您希望python在默认情况下能够找到非标准库。例如,当我从安装程序安装wxPython时,它会将其库添加到PYTHONPATH。我确实将PYTHONHOME设置为python安装的根目录,以便可以将其添加到我的系统PATH环境变量中,以便可以从任何地方运行python。


Tags: 项目文档here开发人员系统地方错误sys
3条回答

下面是我学到的:Python path是一个目录,添加到Python导入搜索路径“sys.path”中,该路径由current dir组成。CWD、PYTHONPATH、标准和共享库以及客户库。例如:

% python3 -c "import sys;print(sys.path)"
['', 
'/home/username/Documents/DjangoTutorial/mySite', 
'/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', 
'/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']

其中第一个路径“”表示当前目录,第二个路径是via

%export PYTHONPATH=/home/username/Documents/DjangoTutorial/mySite 

它可以添加到~/.bashrc以使其永久,其余的是Python标准和dynamic shared library加上第三方库,如django。

如前所述,不要乱动PYTHONHOME,即使将其设置为“”或“无”,也会导致python3外壳停止工作:

% export PYTHONHOME=''
% python3
Fatal Python error: Py_Initialize: Unable to get the locale encoding
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00007f18a44ff740 (most recent call first):
Aborted (core dumped)

注意,如果启动Python脚本,CWD将是脚本的目录。 例如:

username@bud:~/Documents/DjangoTutorial% python3 mySite/manage.py runserver
==== Printing sys.path ====
/home/username/Documents/DjangoTutorial/mySite # CWD is where manage.py resides
/usr/lib/python3.6
/usr/lib/python3.6/lib-dynload
/usr/local/lib/python3.6/dist-packages
/usr/lib/python3/dist-packages

也可以在运行时将路径附加到sys.path: 假设您在~/Documents/Python目录中有一个文件Fibonacci.py:

username@bud:~/Documents/DjangoTutorial% python3 
>>> sys.path.append("/home/username/Documents")
>>> print(sys.path)
['', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', 
'/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages', 
'/home/username/Documents']
>>> from Python import Fibonacci as fibo

或通过

% PYTHONPATH=/home/username/Documents:$PYTHONPATH
% python3
>>> print(sys.path)
['', 
'/home/username/Documents', '/home/username/Documents/DjangoTutorial/mySite', 
'/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', 
'/usr/local/lib/python3.6/dist-packages', '/usr/lib/python3/dist-packages']
>>> from Python import Fibonacci as fibo

你不必设置任何一个。PYTHONPATH可以设置为指向包含私有库的其他目录。如果未设置PYTHONHOME,则Python默认使用找到Python.exe的目录,因此该目录应位于PATH中。

对于大多数安装,不应该设置这些变量,因为运行Python不需要这些变量。Python知道在哪里可以找到它的标准库。

设置PYTHONPATH的唯一原因是维护不希望安装在全局默认位置(即site-packages目录)的自定义Python库目录。

确保阅读:http://docs.python.org/using/cmdline.html#environment-variables

相关问题 更多 >