sys.path
的
docs声明如下:
指定模块搜索路径的字符串列表。从环境变量 PYTHONPATH 初始化,加上依赖于安装的默认值。
所以我在这里的理解是
PYTHONPATH
是一个环境变量。可以使用以下命令在 Powershell 中打印环境变量:
PS> echo $ENV:VARIABLENAME
但是当我这样做时
$ENV:PYTHONPATH
我没有得到任何输出。如果我尝试从 python 终端访问 PYTHONPATH
,我会得到 KeyError
:
>>> import os
>>> os.environ["PYTHONPATH"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python310\lib\os.py", line 679, in __getitem__
raise KeyError(key) from None
KeyError: 'PYTHONPATH'
但是,我知道
PYTHONPATH
被定义在某处,因为当我使用sys.path
时它的值确实出现了:
>>> import sys
>>> sys.path
['', 'C:\\Python310\\python310.zip', 'C:\\Python310\\DLLs', 'C:\\Python310\\lib', 'C:\\Python310', 'C:\\Users\\aa\\AppData\\Roaming\\Python\\Python310\\site-packages', 'C:\\Python310\\lib\\site-packages', 'C:\\Python310\\lib\\site-packages\\scons-4.4.0-py3.10.egg', 'C:\\Python310\\lib\\site-packages\\colorama-0.3.2-py3.10.egg', 'C:\\Python310\\lib\\site-packages\\win32', 'C:\\Python310\\lib\\site-packages\\win32\\lib', 'C:\\Python310\\lib\\site-packages\\Pythonwin']
如果
PYTHONPATH
确实是一个环境变量,为什么我不能在 Python 解释器中使用 Powershell 或 os
访问它?
变量 PYTHONPATH 是一个环境变量,您可以设置它来添加 python 将在其中查找模块和包的其他目录。默认情况下未设置此变量,Python 也不需要它来工作,因为它已经知道在哪里可以找到其标准库 (sys.path)。
但是,如果出于任何原因您需要一些不想安装的自定义 Python 库,您可以
export PYTHONPATH=/path/to/my/modules/
在 Python 上添加 /path/to/my/modules/
然后就知道在哪里可以找到这些自定义模块。
这次,如果你再次打印sys.path,它会显示新添加的模块。