python:libsite-packagessite.py和libsite.py之间的相互作用

python:libsite-packagessite.py和libsite.py之间的相互作用,第1张

python:lib / site-packages / site.py和lib / site.py之间的相互作用

lib/python2.7/site-packages/site.py
文件 通常无法加载
。那是因为
lib/python2.7/site.py
添加
site-packages
路径
sys.path
要从头开始,而
site.py
in
site-packages
根本不可见。如果输入
site.py
in
site-packages
则表示错误,那么那里应该没有此类文件。

在没有补丁的Python中发生的情况是:

  • Python开头为limited
    sys.path
    site-packages
    不是这个列表的一部分 ,除非您设置一个
    PYTHONPATH
    包含也无妨变量。
  • Python导入
    site.py
    ,它将导入第一个列出的
    sys.path
  • lib/python2.7/site.py
    找到并加载
  • site.py
    添加
    site-packages
    sys.path

就是这样,不再

site.py
加载其他模块。即使您尝试过,它也会找到 已经导入
的模块;
sys.modules['site']
存在并保存从中加载的对象
lib/python2.7/site.py

但是,您的安装中安装的是较旧的

setuptools
版本,并且包含的特殊版本
site.py
,如果尚不存在该
easy_install
命令,该命令也将安装到
site-packages
该版本中。它会加载原始
site.py
通过明确地扫描原件
sys.path
与任何
PYTHONPATH
忽略-
supplied路径和加载原始
site.py
手动模块使用
imp.find_module()
imp.load_module()
低级别的功能,从而绕过正常模块高速缓冲存储器。

其目的是更改

sys.path
顺序以使
PYTHONPATH
列出的
.pth
文件具有更高的优先级,请参阅添加补丁的原始提交:

注意:此版本包括被黑的“ site.py”,以支持处理sys.path上站点包 之前的 目录中的.pth文件。

最早在2006年,该补丁已从最新

setuptools
版本中完全删除。
setuptools

因此,您的Linux发行版已被设置为添加

lib/python2.7/site-packages
到您
PYTHONPATH
的外壳中,或者您的shell已为您设置了此版本,或者您的Python已被修补为包括它,
您的中已有旧的
setuptools
“补丁”
site-packages

删除该文件是完全安全的。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5617218.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存