我想要分发一些Python代码,其中包含一些外部依赖项,但是目标机器只安装了核心Python(且用户对easy_install
等工具不熟悉)。
我在想,也许可以使用virtualenv来实现此目的?我应该能够编写一些bash脚本来触发虚拟环境(包括所需的软件包),然后运行我的代码... 但这似乎有点混乱,我想知道是否有更好的解决方案?
有没有简单的解决方案可以分发带有依赖项的Python代码,理想情况下不需要在客户机上使用sudo
?
我想要分发一些Python代码,其中包含一些外部依赖项,但是目标机器只安装了核心Python(且用户对easy_install
等工具不熟悉)。
我在想,也许可以使用virtualenv来实现此目的?我应该能够编写一些bash脚本来触发虚拟环境(包括所需的软件包),然后运行我的代码... 但这似乎有点混乱,我想知道是否有更好的解决方案?
有没有简单的解决方案可以分发带有依赖项的Python代码,理想情况下不需要在客户机上使用sudo
?
Buildout - http://pypi.python.org/pypi/zc.buildout
看一下我的干净项目:http://hg.jackleo.info/hyde-0.5.3-buildout-enviroment/src 它只有两个文件可以完成,Makefile是可选的,但你需要bootstrap.py(Makefile会下载它,但仅在Linux上运行)。buildout.cfg是主要文件,您可以在其中编写依赖项和项目布局的配置。
要获取bootstrap.py,只需从http://svn.zope.org/repos/main/zc.buildout/trunk/bootstrap/bootstrap.py下载即可。
然后运行python bootstap.py
和bin/buildout
。虽然可以将buildout安装到本地,但我不建议这样做,只需使用bootstrap下载的一个即可。
我必须承认,buildout并非最简单的解决方案,但其确实非常强大。因此学习它值得花费时间。
更新于2014年5月30日
由于最近有人点赞并将其用作答案(可能),我想通知一下几个变化。
首先,buildout现在是从github下载的https://raw.githubusercontent.com/buildout/buildout/master/bootstrap/bootstrap.py
那个Hyde项目可能会因为buildout 2的破坏性变化而失败。
在这里,你可以找到更好的示例 http://www.buildout.org/en/latest/docs/index.html 我还建议看一下“与Buildout相关的链接集合”部分,它可能包含您项目的信息。
其次,我个人更喜欢使用可以使用Python安装的setup.py脚本。关于egg结构的更多信息可以在这里找到http://peak.telecommunity.com/DevCenter/PythonEggs,如果看起来太可怕,请查阅谷歌(查询python egg
)。在我看来,它比buildout更简单(肯定更容易调试),而且它可能更有用,因为它可以更轻松地分发和安装,可以在虚拟环境或全局范围内安装,在buildout中,您必须始终提供所有构建脚本与源代码。