以便携方式包含Python库(suds)

时间:2012-08-30 10:28:50

标签: python import suds

我正在使用suds(明亮的库,顺便说一句),我想让它可移植(所以每个使用依赖它的代码的人都可以签出文件然后运行它。)

我已经跟踪了'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"]

但都不起作用。

这是正确的方式吗?如果是这样,我怎样才能使我的导入工作。如果没有,我怎么能达到同样的结果呢?

由于

3 个答案:

答案 0 :(得分:1)

您必须将鸡蛋文件添加到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

答案 1 :(得分:1)

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

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

向上迈出的一步是将egg添加到您的路径中,方法是将其附加到sys.path

然而,正确的方法是package your application分发;或提供requirements file,让其他人知道您的程序所依赖的外部程序包。

答案 2 :(得分:0)

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

pip install -r requirements.txt

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

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