将模块和应用程序安装到离线系统上的典型方法

时间:2014-01-22 05:15:54

标签: python installation twisted

我们有一个应用程序(实际上是一堆Twisted类),它运行在特定的Python版本上,并且依赖于相当多的模块。此应用程序需要部署到无法访问Internet的Windows Server计算机上。

目前我们正在选择:

  • 必须在其他所有内容之前安装Python,以及解压缩所有模块并运行setup.py
  • 的Python脚本
  • 制作安装Python的NSIS安装程序,然后安装带有.exe安装程序的所有模块,然后将较小的模块解包到其他目录中,然后将目录添加到%PYTHONPATH%

处理这种情况的好方法是什么?显然我们不能使用pipeasy_install.exe和其他有福的工具,而且我们的方法很愚蠢和不优雅。

2 个答案:

答案 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实现以获得需要编译的更快性能,则无法在客户端的计算机上执行此操作。