我有一个带有XP SP3 32位和ActivePython 2.7.2 32位社区版的干净虚拟机,当前目录为“ C:\ test”。我已将sitecustomize.py
与“ print('dir1')”代码独立于“ C:\ test \ dir1”,并将sitecustomize.py
与“ print('dir2')”代码独立于“ C:\ test \ dir2”。
如果我将PYTHONPATH
设置为dir1
或dir2
,则会执行相应的sitecustomize.py
:
C:\test> set PYTHONPATH=C:\test\dir1\
C:\text> python
dir1
>>>exit()
C:\test> set PYTHONPATH=C:\test\dir2\
C:\text> python
dir2
但是,如果我将两个目录都添加到pythonpath中,则仅执行第一个目录的
sitecustomize.py
:C:\test> set PYTHONPATH=C:\test\dir1\;C:\test\dir2\
C:\text> python
dir1
>>>exit()
C:\test> set PYTHONPATH=C:\test\dir2\;C:\test\dir1\
C:\text> python
dir2
那么是否有可能在
PYTHONPATH
和多个sitecustomize.py
中有多个dirs,或者我仅限于一个?文档指出,我在PYTHONPATH
中可以有很多目录,但是它并没有说明sitecustomize.py
最佳答案
是的,您可以在PYTHONPATH
中列出多个目录。sitecustomize
是一个在解释程序启动时自动导入的模块。因此,如果您的sitecustomize.py
上有多个PYTHONPATH
,则只会加载第一个。
documentation中描述了该过程:
经过这些路径操作后,将尝试导入名为sitecustomize
的模块,该模块可以执行任意特定于站点的自定义。它通常由系统管理员在site-packages目录中创建。如果此导入失败并出现ImportError
异常,它将被静默忽略。