我们有一个应用程序(实际上是一堆扭曲的类),它运行在一个特定的Python版本上,依赖于相当多的模块此应用程序需要部署到无法访问Internet的Windows服务器计算机上。
目前我们正在选择:
必须先安装python,然后再安装python脚本,该脚本可以解压所有模块并运行setup.py
,
制作一个安装Python的NSIS安装程序,然后使用.exe安装程序将所有模块解压到其他目录中,然后将目录添加到%PYTHONPATH%
。
处理这种情况的好方法是什么?显然,我们不能使用pip
、easy_install.exe
和其他受祝福的工具,而且我们的方法愚蠢且不优雅。
最佳答案
作为第三个选项,您可以考虑使用PyInstaller(http://www.pyinstaller.org)将应用程序作为可执行文件进行剥离您不需要在客户机上安装任何东西(甚至不需要python)
PyInstaller是在Windows、Linux、Mac OS X、Solaris和AIX下将(包)Python程序转换为独立可执行文件的程序与类似工具相比,pyinstaller的主要优势在于它可以与2.4版以来的任何python版本一起工作,它通过透明压缩来构建更小的可执行文件,它是完全多平台的,并且使用os支持来加载动态库,从而确保完全兼容。
我在一个项目中使用它在Linux和Windows中部署了独立的应用程序工作起来很有魅力我的项目也使用了twisted。
在您当前的两个选择中,setup.py方法更像是python但是请注意,如果您的任何模块都有一些需要编译以获得更快性能的c实现,那么您不能在客户机上这样做。