使用pyinstaller从Python3脚本导入theano为Windows构建.exe
编辑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从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)
- 我最后使用的命令行是:
。但奇怪的是:pyinstaller-noupx-onefile-adddata“toto.ui;”toto.py
- pyqtgraph问题:
“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
)