我对egg文件和使用easy_install安装它们有点困惑,希望你能帮助我。 (我阅读了人们对 pip 的推荐,但我想在继续之前了解这一点)。

如果我只是简单地从一个拇指驱动器复制 e,g django_guardian-1.0.2-py2.6.egg 并放入 PYTHONPATH 所指向的例如 ~/bar/ 中,那么尝试通过 import guardian 导入内容会产生 importError。即使我复制了 easy_install.pth 也会发生此错误

import sys; sys.__plen = len(sys.path)
./django_guardian-1.0.2-py2.6.egg
import sys; new=sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p=getattr(sys
'__egginsert',0); sys.path[p:p]=new; sys.__egginsert = p+len(new)

现在,使用 easy_install django-guardian ,当然没有这样的问题。

我导航到 egg 文件的 easy_installed 目录,它包含的只是 .pth.egg 文件。我想知道 easy_install 有哪些其他程序/条目使第一种方法无法使用...

最佳答案

easy_install 使用 .pth 文件将 .egg 文件添加到 sys.path —— Python 搜索要导入的模块的位置列表。
.pth 文件由 site 模块处理,但仅在四个预定义目录中。这些目录特定于平台并基于 sys.prefixsys.exec_prefix 设置。在 Unix 上,最突出的通常是 /usr/lib/pythonXX/site-packages

由于您的自定义目录不是 site 处理的目录之一,因此您的 .pth 文件不会得到处理,Python 也不会查看 .egg 内部。

有关更多信息,请参阅 the site module documentation

关于python:easy_install 期间会发生什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6813331/

10-09 23:17