0

我正在使用 suds(brilliant library,顺便说一句),我想让它可移植(这样每个使用依赖它的代码的人都可以签出文件并运行它)。

我已经找到了“suds-0.4-py2.6.egg”(在 python/lib/site-packages 中),并将其与我的文件一起放入,我尝试过:

import path.to.egg.file.suds
from path.to.egg.file.suds import *
import path.to.egg.file.suds-0.4-py2.6

前两个抱怨 suds 不存在,最后一个抱怨语法无效。

在 __init__.py 文件中,我有:

__all__ = [ "FileOne" ,
            "FileTwo",
      "suds-0.4-py2.6"]

并且之前尝试过

__all__ = [ "FileOne" ,
            "FileTwo",
      "suds"]

但两者都不起作用。

这是正确的方法吗?如果是这样,我怎样才能让我的进口工作。如果没有,我还能如何获得相同的结果?

谢谢

4

3 回答 3

1

您必须将您的 egg 文件添加到sys.path,如下所示:

import sys
# insert at 0 instead of appending to end to take precedence 
# over system-installed suds (if there is one).
sys.path.insert(0, "suds-0.4-py2.6.egg")
import suds
于 2012-08-30T10:39:25.210 回答
1

.egg文件是压缩档案;因此,您不能像发现的那样直接导入它们。

简单的方法是简单地解压缩存档,然后将suds目录复制到应用程序的源代码目录。由于 Python 将在它发现的第一个模块处停止;即使没有为 Python 全局安装,也将使用您的本地 suds 副本。

更进一步,是egg通过将 附加到您的路径来将其添加到sys.path.

但是,正确的方法是打包您的应用程序以进行分发;或者提供一个需求文件,让其他人知道你的程序依赖于哪些外部包。

于 2012-08-30T10:41:24.460 回答
0

requirements.txt通常我用一个包含所有依赖项及其版本的文件分发我的程序。然后,用户可以使用以下命令安装这些库:

pip install -r requirements.txt

我认为包含eggs您的代码不是一个好主意,如果用户使用 python2.7 而不是 python2.6 怎么办

有关需求文件的更多信息:http ://www.pip-installer.org/en/latest/requirements.html

于 2012-08-30T10:38:14.977 回答