2011-07-25 29 views
4

我对egg文件有点困惑,并且使用easy_install进行安装,希望你能帮助我。 (我阅读了关于人们对点子的推荐,但在继续之前,我想先了解一下)。python:在easy_install期间会发生什么?

如果我只是复制E,从说,在e.g ~/bar/这PYTHONPATH指着闪存盘和地方摹django_guardian-1.0.2-py2.6.egg,尝试通过import guardian导入的内容会产生我导入错误。这个错误发生,即使我有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

你为什么要复制一个鸡蛋?没有把自己介绍给'virtualenv'呢? – Nemoden

+0

@Nemoden,是的,我听说过virtualenv,但我很好奇为什么上述不行。 – goh

回答

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