使用virtualenv分发python代码?

使用virtualenv分发python代码?,python,installation,virtualenv,distribute,Python,Installation,Virtualenv,Distribute,我想向只安装了核心python的机器(以及不熟悉easy\u install等)分发一些带有一些外部依赖项的python代码 我想知道virtualenv是否可以用于此目的?我应该能够编写一些bash脚本来触发virtualenv(使用合适的包),然后运行我的代码。。但这看起来有点混乱,我想知道我是不是在发明轮子 有没有什么简单的解决方案可以分发带有依赖项的python代码,理想情况下不需要客户机上的sudo?您可以使用类似的工具来实现此目的。您的应用程序将在所有平台上显示为单个可执行文件,并包

我想向只安装了核心python的机器(以及不熟悉
easy\u install
等)分发一些带有一些外部依赖项的python代码

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

有没有什么简单的解决方案可以分发带有依赖项的python代码,理想情况下不需要客户机上的
sudo

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


以my package为例,它依赖于PyQt4和ZeroMQ,包括Linux、Mac OSX和Windows的发行版,所有发行版都是使用PyInstaller创建的。

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

请参阅pip文档,以获取对此项目的描述和一个非常好的项目示例。

Buildout-
以我的clean项目为例:它只有2个文件可以发挥神奇的作用,更多的Makefile是可选的,但是您需要bootstrap.py(Makefile下载它,但它只在Linux上运行)。buildout.cfg是主文件,您可以在其中写入依赖项配置和项目的布局方式。
要获取bootstrap.py,只需从
然后运行
python bootstap.py
bin/buildout
。我不建议在本地安装buildout,尽管这是可能的,但只需使用一个引导下载

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

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

现在可以从github下载第一个构建

海德项目可能会因为构建2个突破性的变更而失败

在这里你可以找到更好的例子,我还想建议你看看“与构建相关的链接集合”部分,它可能包含你项目的信息


其次,我个人更赞成使用python安装setup.py脚本。关于egg结构的更多信息可以在这里找到,如果这看起来太可怕的话,请访问谷歌(查询
pythongegg
)。在我看来,它实际上比buildout更简单(绝对更容易调试),而且可能更有用,因为它可以在virtualenv的帮助下更容易地分发和安装到任何地方,或者在全球范围内,使用buildout,您必须始终提供所有的构建脚本和源代码。

谢谢Daniel,但我希望不必分发为用户执行此操作的bash脚本(以及安装virtualenv所需的sudo命令)?我没有提到bash或sudo。