我的印象是Python导入应该自动解压缩site-packages中的egg文件 .
我的安装似乎不想自动解压缩鸡蛋 . 我尝试了什么:
(1)我使用easy_install来安装suds模块,它将egg文件复制到site-packages中 . Python无法导入它 . (进口泡沫)
(2)然后我使用了--always-unzip选项来easy_install . 这次它给了我一个目录而不是一个zip文件 . Python仍然无法导入suds模块 .
(3)我重命名了目录suds . 仍然找不到它 .
(4)最后我将suds目录从解压缩的egg目录复制到site-packags中,Python发现它(毫不奇怪) .
对我来说,easy_install不是 . 这里缺少什么?
鲁弗斯
1 回答
默认情况下(如果您尚未指定多版本模式),easy_installing egg将在site-packages中的
easy-install.pth
文件中添加一个条目 . 检查那里是否有肥皂蛋的参考 . 您还可以检查Python导入路径(Python将搜索模块的位置列表),如下所示:您是否在easy_installed suds之前启动的Python shell中尝试了
import suds
?这可以解释你所看到的行为 ..pth
文件仅在Python启动时读取,因此egg目录或zip文件不会出现在sys.path
中 . 从egg目录中复制suds
目录是有效的,因为site-packages
本身已经在sys.path
中 . 因此,请确保在安装鸡蛋后重新启动Python .Python将从zip存档导入,但不会将存档解压缩到site-packages中 . 也就是说,导入后它不会将解压缩的目录留在那里 . (我认为它是从zip文件中就地读取而不是在文件系统中的任何地方提取它 . )我已经看到了一些问题,其中一些软件包不能用作压缩蛋(他们试图从文件中的位置读取数据 - 系统),所以我建议总是使用--always-unzip标志,如(2)中所做的那样 .
默认情况下,您没有't given the command lines you used. Did you specify the -m option to easy_install? That will cause the egg to be installed in multi-version mode. It won'在sys.path中,并且在尝试导入之前需要使用
pkg_resources.require
函数 .