我正在使用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"]
但都不起作用。
这是正确的方式吗?如果是这样,我怎样才能使我的导入工作。如果没有,我怎么能达到同样的结果呢?
由于
答案 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