使用pyinstaller从Python3脚本导入theano为Windows构建.exe

使用pyinstaller从Python3脚本导入theano为Windows构建.exe,windows,python-3.x,executable,theano,pyinstaller,Windows,Python 3.x,Executable,Theano,Pyinstaller,编辑2017年9月2日下午1点 经过多次尝试,我最终成功地用pyinstaller构建了一个.exe 不幸的是,我没有处理“theano”模块(在我的例子中,“pymc3”模块需要这个模块),我不得不修改.py文件并放弃部分应用程序。我下面的描述有两个目的:第一,它可能会有所帮助;第二个有人能帮我为windows 7+构建一个带有“theano”模块的.exe吗? 提醒:我的python 3脚本在一个“.ui”文件中打开一个由Qt设计器制作的简单GUI,并导入pyqtgraph(带有pyqt5)

编辑2017年9月2日下午1点

经过多次尝试,我最终成功地用pyinstaller构建了一个.exe

不幸的是,我没有处理“theano”模块(在我的例子中,“pymc3”模块需要这个模块),我不得不修改.py文件并放弃部分应用程序。我下面的描述有两个目的:第一,它可能会有所帮助;第二个有人能帮我为windows 7+构建一个带有“theano”模块的.exe吗?

提醒:我的python 3脚本在一个“.ui”文件中打开一个由Qt设计器制作的简单GUI,并导入pyqtgraph(带有pyqt5)、pymc3(以及pymc3所需的theano)、scipy、numpy、os和sys。它将分布在装有Windows 7+的计算机上。我试图用py2exe、cx_freeze、pynsist和pyinstaller构建一个“.exe”(我打开并更新了几篇文章,这篇文章仍然打开:),但都失败了。在我不得不放弃theano之后,我的最佳结果(使用pyinstaller)如下所述

  • 我最后使用的命令行是:
    pyinstaller-noupx-onefile-adddata“toto.ui;”toto.py
    。但奇怪的是:
1不包括qt设计器文件“toto.ui”,必须与.exe一起分发。否则,运行.exe时会出现错误消息,表示找不到toto.ui

2 python环境“Library/plugin”目录中的“platforms”目录也必须与.exe一起分发。否则,运行.exe时会出现错误消息“此应用程序无法启动,因为它找不到qt。” 平台插件windows'(但在构建时pyinstaller没有错误消息!)

3.exe的大小是220MB!似乎pyinstaller在构建过程中包含了一堆无用的东西

  • pyqtgraph问题:
乍一看,“pyqtgraph”模块似乎与pyinstaller不兼容。实际上,当python代码导入pyqtgraph时,pyinstaller会给出一个语法错误:
“yield”在异步函数中。在我看来,这似乎非常尴尬(这是pyinstaller中的一个bug吗?),因为我从论坛上得到的印象是,这与异步生成器相关,而pyinstaller仅与python 3.6兼容,而pyinstaller仅与python 3.5兼容-这与异步生成器不兼容…那么pyinstaller为什么要使用它呢?事实证明,这个类似于bug的功能在新版本的pyinstaller中是禁用的,该版本尚未发布(因此默认情况下未安装):
pip-install-git+https://github.com/pyinstaller/pyinstaller
,感谢9dogs(在评论中)。我还发现,在py文件中导入PYQTGRAPH之前,显式编写os.environ['PYQTGRAPH\u QT\u LIB']='PyQt5'或'PyQt4'可能会有所帮助

  • 没问题:
theano生成了几个pyinstaller未检测到的隐式导入。因此,建筑看起来还可以,但当运行.exe时,您会收到错误消息,如“no module theano.tensor.shared\u randomstreams”。不幸的是,我没有使用pyinstaller的“-hidden import”选项,所以我在py文件中显式地添加了导入(在本例中为“import theano.tensor.shared_randomstreams”)


但这并不是结束:在此之后,文件“…\AppData\Local\Temp\u MEI35682\theano\gpuarray\blockgemv.c”丢失,导致
[4128]无法执行脚本。我不知道这个文件是什么,也没有找到信息。我放弃并删除了部分GUI以避免使用theano。有人能帮我在pyinstaller中使用theano吗?

您到底有什么问题?我已经使用pyinstaller成功地将pyqtgraph+numpy+matplotlib应用程序构建为exe了好几次。尝试使用pyinstaller的最新git版本(
pip-install-git)+https://github.com/pyinstaller/pyinstaller.git
)您到底有什么问题?我已经使用pyinstaller成功地将pyqtgraph+numpy+matplotlib应用程序构建为exe了好几次。尝试使用pyinstaller的最新git版本(
pip-install-git)+https://github.com/pyinstaller/pyinstaller.git