首页 文章

为什么导入时我的Python 2.6自动解压缩鸡蛋文件?

提问于
浏览
1

我的印象是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 回答

  • 1

    默认情况下(如果您尚未指定多版本模式),easy_installing egg将在site-packages中的 easy-install.pth 文件中添加一个条目 . 检查那里是否有肥皂蛋的参考 . 您还可以检查Python导入路径(Python将搜索模块的位置列表),如下所示:

    import sys
    print sys.path
    

    您是否在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 函数 .

相关问题