wim*_*wim 12 python environment-variables python-import
在我的机器上,值PYTHONPATH似乎插入sys.path:
例如,使用PYTHONPATH=/spam:/eggs:/spam然后检入python -m site,我得到一个结果,如:
sys.path = [
something,
'/spam',
'/eggs',
more,
stuff,
after
]
Run Code Online (Sandbox Code Playgroud)
它似乎与Python 2和Python 3上的行为相同.问题是,这些处理的PYTHONPATH记录/可靠性有多少,以及在其他平台上有什么不同?这是否被解析器烘焙,或site.py由系统管理员"调整" 处理和/或处于危险之中?
我不能在这里的文档中看到它解释,它只是说sys.path"增强"(并且,与文档相反,不存在的目录似乎没有被忽略).
我们来看看清单吧.
- 从索引1开始
那很可靠.正如PYTHONPATH文档中所述,
默认搜索路径是依赖于安装的,但通常以prefix/lib/pythonversion开头(参见上面的PYTHONHOME).它总是附加到PYTHONPATH.
如上所述,在接口选项下,将在PYTHONPATH前面的搜索路径中插入一个附加目录.搜索路径可以在Python程序中作为变量sys.path进行操作.
在PYTHONPATH之前插入一个目录,该目录可能是当前目录,脚本目录或其他目录,具体取决于您运行Python的方式.附加其他目录.该site模块还将添加一些模块sys.path,但也site附加:
导入此模块会将特定于站点的路径附加到模块搜索路径并添加一些内置...
- 订单保留
我不认为这在任何地方都有明确的记录,但搜索路径顺序很重要,而改变它是向后兼容性的突破,我认为它们不会轻易做出.
- 去重
这是site模块的无证效果.如果您使用-S禁用的标志运行Python,则不会发生这种情况site.你可以看到代码site.removeduppaths