python:easy_install期间会发生什么?

时间:2011-07-25 08:19:13

标签: python easy-install

我对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使得第一种方法无法使用的其他程序/条目....

1 个答案:

答案 0 :(得分:4)

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