我们有一个应用程序(实际上是一堆Twisted类),它运行在特定的Python版本上,并且依赖于相当多的模块.此应用程序需要部署到无法访问Internet的Windows Server计算机上.
目前我们选择:
>必须在其他所有内容之前安装Python,以及解压缩所有模块并运行setup.py的Python脚本,
>制作安装Python的NSIS安装程序,然后安装所有带有.exe安装程序的模块,然后将较小的模块解包到其他目录中,然后将dir添加到%PYTHONPATH%.
处理这种情况的好方法是什么?显然我们不能使用pip,easy_install.exe和其他有福的工具,而且我们的方法很愚蠢和不优雅.
解决方法:
作为第三个选项,您可以考虑使用PyInstaller(http://www.pyinstaller.org)将应用程序deploed为可执行文件.你不需要在客户端机器上安装任何东西(甚至不是python)
PyInstaller is a program that converts (packages) Python programs into stand-alone executables, under Windows, Linux, Mac OS X, Solaris and AIX. Its main advantages over similar tools are that PyInstaller works with any version of Python since 2.4, it builds smaller executables thanks to transparent compression, it is fully multi-platform, and use the OS support to load the dynamic libraries, thus ensuring full compatibility.
我在一个项目中使用它来在Linux和Windows中部署独立应用程序.工作就像一个魅力.我的项目也使用了Twisted.
在当前的两个选择之间,setup.py方法更加pythonic.但请注意,如果您的任何模块具有某些c实现以获得需要编译的更快性能,则无法在客户端的计算机上执行此操作.