以可移植的方式包含Python库(suds)

2024-09-27 20:21:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

在\uu init_uu.py文件中,我有:

^{pr2}$

以前也试过

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

但都没用。在

这样做对吗?如果是这样的话,我怎样才能让我的进口产品发挥作用呢。如果没有,我怎么才能达到同样的结果?在

谢谢


Tags: 文件topath代码fromimportegglib
3条回答

.egg文件是压缩的存档文件;因此您无法直接导入您发现的文件。在

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

在此基础上的一个步骤是通过将egg附加到sys.path的路径中。在

然而,正确的方法应该是package your application进行分发;或者提供一个requirements file,让其他人知道你的程序所依赖的外部包。在

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

pip install -r requirements.txt

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

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

必须将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

相关问题 更多 >

    热门问题