用virtualenv分发python代码?

时间:2011-04-04 08:08:29

标签: python installer virtualenv distribute

我想将一些带有一些外部依赖项的python代码分发给只安装了核心python的机器(以及不熟悉easy_install的用户等)。

我想知道是否可以将virtualenv用于此目的?我应该能够编写一些触发virtualenv的bash脚本(使用合适的软件包),然后运行我的代码..但这看起来有些混乱,我想知道我是否重新发明了这个轮子?

是否有任何简单的解决方案来分发带有依赖项的python代码,理想情况下在客户机上不需要sudo

3 个答案:

答案 0 :(得分:6)

构建 - http://pypi.python.org/pypi/zc.buildout
作为示例看看我的清洁项目:http://hg.jackleo.info/hyde-0.5.3-buildout-enviroment/src它只有2个文件可以实现魔法,更多的Makefile是可选的,但是你需要bootstrap.py(Make文件下载它,但它只在Linux上运行)。 buildout.cfg是主文件,您可以在其中编写依赖项和配置项目的方式 要获取bootstrap.py,只需从http://svn.zope.org/repos/main/zc.buildout/trunk/bootstrap/bootstrap.py下载 然后运行python bootstap.pybin/buildout。我不建议在本地安装buildout,尽管可以,只需使用一个bootstrap downloads。

我必须承认,扩建不是最简单的解决方案,但它真的很强大。所以学习值得时间。

更新2014-05-30
由于它最近被投票并用作答案(可能),我想通知一些变化。

首先 - buildout现在从github https://raw.githubusercontent.com/buildout/buildout/master/bootstrap/bootstrap.py

下载

由于扩建2的改变,hyde项目可能会失败。

在这里你可以找到更好的样本http://www.buildout.org/en/latest/docs/index.html我也想建议查看“与Buildout相关的链接集合”部分,它可能包含你项目的信息。

其次,我个人更赞成可以使用python安装的setup.py脚本。关于鸡蛋结构的更多信息可以在http://peak.telecommunity.com/DevCenter/PythonEggs找到,如果看起来太可怕了 - 请查看谷歌(查询python egg)。在我看来,它实际上比buildout更简单(绝对更容易调试),并且它可能更有用,因为它可以更容易地分发并在virtualenv或全局的帮助下安装在任何地方,在buildout中你必须提供所有的始终使用源代码构建脚本。

答案 1 :(得分:4)

您可以使用PyInstaller之类的工具来实现此目的。您的应用程序将在所有平台上显示为单个可执行文件,并包含依赖项。用户甚至不需要安装Python!

logview包为例,它依赖于PyQt4和ZeroMQ,包括使用PyInstaller创建的Linux,Mac OSX和Windows的发行版。

答案 2 :(得分:4)

你不想发布你的virtualenv,如果这就是你所要求的。但您可以使用pip创建一个需求文件 - 通常称为requirements.txt - 并告诉您的用户创建virtualenv然后运行pip install -r requirements.txt,这将为他们安装所有依赖项。

有关the requirements file formatthe Pinax project的说明,请参阅pip文档,以获取能够很好地完成此任务的项目示例。