我想将一些具有一些外部依赖性的python代码分发给只安装了核心python的机器(以及不熟悉的用户) easy_install
等等。)。
我想知道是否可以将virtualenv用于此目的?我应该能够编写一些触发virtualenv的bash脚本(使用合适的软件包),然后运行我的代码..但这看起来有些混乱,我想知道我是否重新发明了这个轮子?
是否有任何简单的解决方案来分发具有依赖关系的python代码,理想情况下不需要 sudo
在客户端机器上?
我想将一些具有一些外部依赖性的python代码分发给只安装了核心python的机器(以及不熟悉的用户) easy_install
等等。)。
我想知道是否可以将virtualenv用于此目的?我应该能够编写一些触发virtualenv的bash脚本(使用合适的软件包),然后运行我的代码..但这看起来有些混乱,我想知道我是否重新发明了这个轮子?
是否有任何简单的解决方案来分发具有依赖关系的python代码,理想情况下不需要 sudo
在客户端机器上?
建设 - 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.py
和 bin/buildout
。我不建议在本地安装buildout,尽管可能,只需使用一个bootstrap下载。
我必须承认,扩建不是最简单的解决方案,但它真的很强大。所以学习值得时间。
更新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中你必须提供所有的始终使用源代码构建脚本。
你可以使用像这样的工具 PyInstaller 以此目的。您的应用程序将在所有平台上显示为单个可执行文件,并包含依赖项。用户甚至不需要安装Python!
以我的身份为例 日志查看 package,依赖于PyQt4和ZeroMQ,包括使用PyInstaller创建的Linux,Mac OSX和Windows的发行版。
你不想分发你的virtualenv,如果这就是你所要求的。但你可以使用 pip
创建需求文件 - 通常称为 requirements.txt
- 并告诉用户创建virtualenv然后运行 pip install -r requirements.txt
,它将为它们安装所有依赖项。
建设 - 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.py
和 bin/buildout
。我不建议在本地安装buildout,尽管可能,只需使用一个bootstrap下载。
我必须承认,扩建不是最简单的解决方案,但它真的很强大。所以学习值得时间。
更新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中你必须提供所有的始终使用源代码构建脚本。
你可以使用像这样的工具 PyInstaller 以此目的。您的应用程序将在所有平台上显示为单个可执行文件,并包含依赖项。用户甚至不需要安装Python!
以我的身份为例 日志查看 package,依赖于PyQt4和ZeroMQ,包括使用PyInstaller创建的Linux,Mac OSX和Windows的发行版。
你不想分发你的virtualenv,如果这就是你所要求的。但你可以使用 pip
创建需求文件 - 通常称为 requirements.txt
- 并告诉用户创建virtualenv然后运行 pip install -r requirements.txt
,它将为它们安装所有依赖项。