【发布时间】:2012-07-19 14:11:03
【问题描述】:
我有一个由 distutils 打包的 python 模块到一个安装在自定义前缀中的压缩鸡蛋中。如果我将 PYTHONPATH 设置为包含该前缀的站点包目录,则会将 egg 添加到 sys.path 并且可以导入模块。但是,如果我从脚本中使用前缀的站点包目录运行 site.addsitedir,则不会将 egg 添加到 sys.path 并且模块导入失败。在这两种情况下,模块的 site-packages 目录都以 sys.path 结尾。
这是预期的行为吗?如果是这样,有什么方法可以告诉 Python 在不设置 env var 的情况下处理给定目录中的 .pth 文件?
【问题讨论】:
-
.pth 文件中有什么?如果您手动将鸡蛋添加到 sys.path 中是否有效?创建和使用 egg 的 Python 版本是否相同?
-
.pth 文件:导入系统; sys.__plen = len(sys.path) ./webcharon-0.1-py2.7.egg 导入系统;新=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys,'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)
-
Python 版本相同。事实上,相同的二进制文件。
-
糟糕,在 .pth 文件中,'./webcharon...' 之前和 '.egg' 之后有一个换行符
标签: python pythonpath