我们有一个应用程序(实际上是一堆Twisted类),它运行在特定的Python版本上,并且依赖于相当多的模块。此应用程序需要部署到无法访问Internet的Windows Server计算机上。
目前我们正在选择:
setup.py
,%PYTHONPATH%
。处理这种情况的好方法是什么?显然我们不能使用pip
,easy_install.exe
和其他有福的工具,而且我们的方法很愚蠢和不优雅。
答案 0 :(得分:3)
尝试使用wheels。它旨在覆盖您的情况,即您构建一次轮子,下载所有必需的包。然后,您只需将车轮存档复制到目标计算机并安装您的应用程序而无需下载任何内容。
答案 1 :(得分:3)
作为第三个选项,您可以考虑使用PyInstaller(http://www.pyinstaller.org)将应用程序deploed为可执行文件。你不需要在客户端机器上安装任何东西(甚至不是python)
PyInstaller是一个在Windows,Linux,Mac OS X,Solaris和AIX下将Python程序转换(打包)为独立可执行文件的程序。与类似工具相比,它的主要优点是PyInstaller可以与2.4版本的任何版本的Python一起使用,它通过透明压缩构建较小的可执行文件,它是完全多平台的,并使用OS支持来加载动态库,从而确保完全兼容。
我在项目中使用它在Linux和Windows中部署独立应用程序。工作就像一个魅力。我的项目也使用了Twisted。
在您当前的两个选择之间,setup.py方法更加pythonic。但请注意,如果您的任何模块具有某些c实现以获得需要编译的更快性能,则无法在客户端的计算机上执行此操作。