2

我的印象是 Python 导入应该自动解压缩站点包中的鸡蛋文件。

我的安装似乎不想自动解压缩鸡蛋。我尝试了什么:

(1)我使用easy_install安装了suds模块,将egg文件复制到site-packages中。Python 无法导入它。(进口泡沫)

(2) 然后我使用了easy_install 的--always-unzip 选项。这次它给了我一个目录而不是一个 zip 文件。Python 仍然无法导入 suds 模块。

(3) 我重命名了目录 suds。还是找不到。

(4) 最后,我将解压后的 egg 目录中的 suds 目录复制到 site-packags 中,Python 找到了它(这并不奇怪)。

对我来说,easy_install 不是。这里缺少什么?

鲁弗斯

4

1 回答 1

2

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

import sys
print sys.path

您是否尝试import suds过在 easy_installed suds 之前启动的 Python shell?这可以解释你看到的行为。这些.pth文件仅在 Python 启动时读取,因此 egg 目录或 zip 文件不会出现在sys.path. suds从 egg 目录中复制dir 是可行的,因为site-packages它本身已经在sys.path. 因此,请确保在安装 egg 后重新启动 Python。

Python 将从 zip 存档导入,但不会将存档解压缩到站点包中。也就是说,它不会在您导入后将解压缩的目录留在那里。(我认为它就地从 zip 文件中读取,而不是在文件系统中的任何位置提取它。)我已经看到一些包不能作为压缩鸡蛋工作的问题(他们试图从文件中的位置读取数据-系统),所以我建议始终使用 --always-unzip 标志,就像在 (2) 中所做的那样。

你还没有给出你使用的命令行。您是否为 easy_install 指定了 -m 选项?这将导致egg以多版本模式安装。默认情况下它不会在 sys.path 中,您需要pkg_resources.require在尝试导入它之前使用该函数。

于 2011-09-02T17:46:59.117 回答