我正在为其他开发人员编写一个设置文档,为python项目工作,我一直在阅读PYTHONPATH
环境变量.我正在查看我当前的开发系统,并认为我有一些错误导致我的IDE(IntelliJ)在查找python库时表现不正确.
我已经看过这里和这里的文档,我仍然不确定PYTHONPATH
环境变量应该是什么.
我PYTHONHOME
指的是`C:\ Python27'.
我的当前PYTHONPATH
设定为PYTHONHOME
.我还应该添加目录sys.path
吗?
更新:
根据以下信息,PYTHONPATH
除非您希望python能够在默认情况下找到非标准库,否则不需要设置.例如,当我从安装程序安装wxPython时,它会将其库添加到PYTHONPATH
.我设置PYTHONHOME
为python安装的根目录,以便我可以将它添加到我的系统PATH
环境变量中,以便我可以从任何地方运行python.
Mar*_*nen 39
您不必设置其中任何一个.可以将PYTHONPATH设置为指向其中包含私有库的其他目录.如果未设置PYTHONHOME,Python默认使用找到python.exe的目录,因此dir应该在PATH中.
Fer*_*yer 21
对于大多数安装,您不应设置这些变量,因为Python不需要它们运行.Python知道在哪里可以找到它的标准库.
设置PYTHONPATH的唯一原因是维护您不想在全局默认位置(即site-packages
目录)中安装的自定义Python库的目录.
请务必阅读:http://docs.python.org/using/cmdline.html#environment-variables
这是我学到的: PYTHONPATH 是添加到 Python 导入搜索路径“sys.path”的目录,该路径由当前目录组成。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']
Run Code Online (Sandbox Code Playgroud)
其中第一条路径 '' 表示当前目录,第二条路径是通过
%export PYTHONPATH=/home/username/Documents/DjangoTutorial/mySite
Run Code Online (Sandbox Code Playgroud)
可以添加到~/.bashrc中使其永久化,其余为Python标准和动态共享库加上django等第三方库。
据说不要与 PYTHONHOME 混淆,即使将其设置为 '' 或 'None' 也会导致 python3 shell 停止工作:
% 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)
Run Code Online (Sandbox Code Playgroud)
请注意,如果您启动 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
Run Code Online (Sandbox Code Playgroud)
您还可以在运行时将路径附加到 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
Run Code Online (Sandbox Code Playgroud)
或通过
% 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
Run Code Online (Sandbox Code Playgroud)