Python中自动下载所需模块的最简单方法是什么?

23
我想发布一个我写的Python模块,它依赖于几个包。最简单的方法是在程序运行时自动下载这些软件包,以防它们在系统上不可用。大多数模块应该可以通过easy_install或pip之类的方式获得。我只是想避免用户分别安装每个模块。
谢谢。

大多数软件包管理系统都有一种方式来指定软件包的依赖关系,以便自动安装依赖项。我不知道如何使用setuptools / Python Package Index来执行此操作,但我假设有类似指定依赖关系的机制。 - Michael Aaron Safyan
2个回答

21

@J.F. 我猜Idan Gazit负责第一张图片;我不确定谁负责第二张。两者都托管在Amazon S3上;图像位置指向它们的S3位置,因此您可以只复制图像位置并在此处和其他地方使用它们。我在Titus Brown的PyCon 2010演讲中看到了“Python Comrades”这个;“New Hotness”可能已经存在了一年左右。也许在Python邮件列表上进行一些侦查可以找到原始来源。 - gotgenes
尽管这是目前得票最高的答案,但它并没有提供太多解决方案(图形很酷)。我最近在这个主题上发现了这篇最新文章。可能会对其他人有所帮助。 - bnjmn
1
@fabian789 正确。我已经更新了答案。setuptools是新的首选库。我们一直在与distribute作斗争。;-) - gotgenes
@bnjmn,你发帖中的超链接已经失效了。 - Hector
感谢 @Hector 这是一个更新后的链接到 这篇文章 - bnjmn

4

请查看setuptools文档,了解如何声明您的依赖项--这将允许easy_install找到、下载和安装它们(以及它们的传递闭包),如果所有内容都在PyPi中可用,或者如果您指定了依赖项的URL,则可以这样做。


你对pip有什么看法?与setuptools的比较似乎措辞非常强烈... Python社区真的一致认为pip更好吗? - user248237
另外,pip能像setuptools一样处理非PyPi依赖关系吗? - user248237
@user,很遗憾我没有太多关于pip的直接经验,但我的印象是它可以做到easy_install所能做的,并且更多。正如http://www.b-list.org/weblog/2008/dec/15/pip/所说,“pip不会以任何方式改变您的打包工作流程。您只需按照自己一直以来的方式制作软件包,然后将其放在Web上某个地方(最好在Python软件包索引中列出,但如果您不想这样做,也可以不列),使用pip的人就可以获取并安装它。”。 - Alex Martelli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接