从python 3脚本为Windows构build一个.exe文件

我想build立一个python 3脚本的可执行文件:

  • 导入pyqtgraph(用pyqt5)
  • importtheano和pymc3
  • 也importnumpy,scipy,sys,os
  • 打开一个简单的用qtdevise器制作的GUI,并存储在一个'.ui'文件中
  • 将分布在Windows 7 +的机器上

我在几个小时内尝试了几个工具(py2exe,pyinstaller,pynsist,cx_Freeze),但每次都失败了。 我的'更坏'的结果是pyinstaller(见下文)没有theano部分(所以没有脚本的一部分)。 谁能帮我 ?

我有3个文件:2'.py'文件(1与主,其他与一堆定义)和描述GUI的“.ui”。 脚本进行一些统计分析,然后绘制一些曲线。

这里是我的python 3.5和cx_Freeze失败的一个例子(我认为这是我进行过的最先进的尝试,但我并不特别限于这些工具):我把我的3个文件放在Windows机器的一个目录中一切都痛苦地安装(与python)。 我添加一个文件'setup.py',对于cx_Freeze是:

from cx_Freeze import setup, Executable import os os.environ['TCL_LIBRARY'] = r'C:\Program Files\Python 3.5\tcl\tcl8.6' os.environ['TK_LIBRARY'] = r'C:\Program Files\Python 3.5\tcl\tk8.6' os.environ['PYQTGRAPH_QT_LIB'] = 'PyQt5' setup( name = 'concentrationprofiles', version = '0.1', description = 'simple tool to simulate concentration profiles. preliminary', author = 'SPH', options = dict( build_exe = dict( packages = ['os','sys','numpy','theano','pymc3','pyqtgraph'],#omitting 'scipy' ! for some reason when I put 'scipy' in this list the building fails, but it works without… probably the 'import scipy' inside the code is properly interpreted includes = ['numpy.core._methods','numpy.lib.format', 'pyqtgraph.debug','pyqtgraph.functions', 'pyqtgraph.ThreadsafeTimer','cp_util_jul17'], include_files = ['GUI_cprofiles_jul17.ui'] )), executables = [Executable( script='cprofiles_jul17.py', base='Win32GUI', targetName='concentprofiles.exe' )] ) 

然后在4个文件的目录中,在anaconda提示符(相当于我所知的命令提示符)中执行命令行'python setup.py build'。 经过大量的情节和战斗时间,build筑看起来很好(100几行没有错误信息,直到最后),它创build了一个“build立”目录与“exe.win-amd64-3.5”子目录包含所需的一切+ .exe。 但是,当我尝试运行这个.exe我什么也没有得到:没有错误消息,没有控制台或窗口打开,没有快速开幕式,我找不到一个日志…只是没有

我试图将“基本”选项从“Win32GUI”更改为基地=“控制台”和基地=无。 在这些情况下,我想有一个快速的控制台打开 – closures,我不能读取,因为我没有find日志。

在其他尝试中,还有其他一些不好的结果:

  • py2exe:原来与我平常的python 3.6不兼容,所以我降级到了3.5。 但即使在3.5,几行之后它就会冻结:再次没有错误信息,没有控制台或窗口打开,没有快速的开合,我找不到一个日志…什么都没有。 甚至不是“build”目录。 另一次我也尝试了一个替代python 3.4,但我得到了一个关于我想在论坛上安装下面的说明缺less'msvcr100.dll'错误。 当我最终获得修改系统目录的权限时,一个指令“regsvr32”失败了(这不是仅用于32位?但是没有'regsvr64'…)。 我最终放弃了

  • pyinstaller:查看更新

  • pynsist:pynsist的原理是你没有得到一个可执行文件,只有一个安装程序。 为什么不 ? 只要我可以分发代码,我不需要.exe。 不幸的是,在构build安装程序(没有错误)并安装它(再次没有可见的错误)之后,程序没有提供任何东西,就像在cx_Freeze案例中一样。

我可以添加一个链接到脚本文件,如果你想/需要。


更新8月18日,2017年9月20日

在build议之后,我打开了一个关于pyinstaller的新post: 从python 3脚本中用pyinstaller导入theano来为Windows生成一个.exe 。

我邀请你回答那里的pyinstaller问题。 如果我的问题用py2exe或cx_freeze解决,这个问题将被标记为已回答。


9月2日,2日更新:

我最终设法使用pyinstaller在许多情节之后build立一个.exe。

不幸的是,我没有处理'theano'模块(在我的情况下'pymc3'模块需要这个模块),我不得不修改.py文件并放弃部分应用程序。 任何人都可以帮助我build立一个.exe的Windows 7 +,'theano'模块?