Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在脱机系统上安装模块和应用程序的规范方法_Python_Installation_Twisted - Fatal编程技术网

Python 在脱机系统上安装模块和应用程序的规范方法

Python 在脱机系统上安装模块和应用程序的规范方法,python,installation,twisted,Python,Installation,Twisted,我们有一个应用程序(实际上是一堆扭曲的类),它运行在特定的Python版本上,并且依赖于相当多的模块。此应用需要部署到无法访问Internet的Windows Server计算机上 目前,我们正在选择: 必须先安装Python,然后再安装一个Python脚本来解压所有模块并运行setup.py 制作一个NSIS安装程序,安装Python,然后使用.exe安装程序安装所有模块,然后将较小的模块解压到其他目录中,然后将目录添加到%PYTHONPATH% 处理这种情况的好办法是什么?显然,我们不能

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

目前,我们正在选择:

  • 必须先安装Python,然后再安装一个Python脚本来解压所有模块并运行
    setup.py
  • 制作一个NSIS安装程序,安装Python,然后使用.exe安装程序安装所有模块,然后将较小的模块解压到其他目录中,然后将目录添加到
    %PYTHONPATH%

处理这种情况的好办法是什么?显然,我们不能使用pip、easy_install.exe和其他受欢迎的工具,我们的方法既愚蠢又不雅观。

尝试使用。它旨在涵盖您的情况,即您只需构建一次轮子,即可下载所有必需的软件包。然后,您只需将轮盘存档复制到目标机器上,并在不下载任何东西的情况下安装您的应用程序。

< P>作为第三选项,您可以考虑将应用程序部署为使用PyInstaller()的可执行文件。您不需要在客户机上安装任何东西(甚至不需要python)

PyInstaller是一个在Windows、Linux、Mac OS X、Solaris和AIX下将Python程序转换(打包)为独立可执行文件的程序。与类似工具相比,它的主要优点是PyInstaller可以与2.4版以后的任何Python版本一起工作,它通过透明压缩构建更小的可执行文件,它是完全多平台的,并且使用操作系统支持加载动态库,从而确保完全兼容性

我在一个项目中使用它在Linux和Windows中部署独立的应用程序。工作得很有魅力。我的项目也使用了Twisted


在当前的两种选择之间,setup.py方法更像python。但是要注意,如果您的任何模块都有一些c实现,需要编译以提高性能,那么您不能在客户端机器上这样做。

谢谢!在安装控制盘组件之前,是否需要将任何附加模块带到目标机器?即。它是否可以生成只需要默认Python安装提供的最少Python环境的“自解压”数据包?您应该有pip和wheel数据包来解包wheel archive,还可以选择使用virtualenv。关于wheel文档,有一个非常简单明了的例子。我非常喜欢wheels中涉及的技术,使用类似
pyinstaller
的东西意味着您不必在远程上调用distutils或setuptools中的逻辑(挑剔、易出错、不由您维护),断开连接的机器,可能以有趣或新颖的方式出现故障。如果它是自包含的,那么您需要担心的唯一代码就是您的应用程序(当然还有python,以及pyinstaller拥有的任何引导程序代码——但您可能必须处理前者,而后者可以很容易地进行测试)。