`PYTHONPATH` 真的是一个环境变量吗?

3周前#Python

sys.path 的文档说明如下:
指定模块搜索路径的字符串列表。 从环境变量 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 访问它?

回答
R
Russel Abernathy
3周前

变量 PYTHONPATH 是一个环境变量,您可以设置它以添加 python 将在其中查找模块和包的其他目录。 默认情况下未设置此变量,Python 也不需要此变量来工作,因为它已经知道在哪里可以找到其标准库 (sys.path)。

但是如果出于任何原因你需要一些你不想安装的自定义 Python 库,你可以导出 PYTHONPATH=/path/to/my/modules/ 添加 /path/to/my/modules/ 这样 Python 就会知道在哪里 找到那些自定义模块。

而这一次,如果你再次打印 sys.path,它会显示新添加的模块。