我有一个使用嵌入式Python的应用程序,其中包括
python.exe
。我添加了一个 sitecustomize.py
来设置 sys.path
,例如:
import sys
sys.path = ['.','.\\python310.zip','.\\Lib','.\\Lib\\site-packages']
这对我有用,我可以在运行时看到这条路径
python.exe
。但这对同事不起作用,他们的环境显示出不同的sys.path
:
['.','.\\python310.zip']
他们从同一文件夹位置但在不同主机上的同一安装中调用相同的命令。
我知道还有
._pth
(或 .pth
)文件和 pyvenv.cfg
可以对 sys.path
和 PYTHONPATH
环境变量产生影响。然后还有PYTHONSTARTUP
、usercustomize
、PYTHONUSERBASE
、sysconfig
和九个‘方案’🤦。
要设置的所有引导选项是什么
sys.path
以及优先级是什么?
site.py
在其中扮演什么角色?用户包是否优先于站点包,并且站点之上是否还有另一个“全局”级别可以覆盖所有内容?
我真的想根据安装文件布局破坏除了我自己的路径之外的所有内容。如何定义我的嵌入式环境,使其不受该环境外部设置的影响?
我在https://docs.python.org/3/library/sys_path_init.html#sys-path-init
找到了我正在寻找的答案看起来评估顺序是
PYTHONPATH
环境变量。sitecustomize.py
.._pth
文件。pyvenv.cfg
我的测试表明,即使
sitecustomize.py
设置了显式 sys.path
,这也会受到 ._pth
文件的影响。
import site
中的_pth
语句会将特定于站点的路径(例如站点包)附加到模块搜索路径。这包括评估任何 .pth
(不含 _
)文件。
如果找到
pyvenv.cfg
文件,无论之前的配置如何,它都会更改环境。