我想创建一个可执行的Python 3脚本,它具有以下功能:
我有3个文件:2个“.py”文件(1个主文件和另一个包含一堆定义的文件)和描述GUI的“.ui”文件。脚本进行一些统计分析,然后绘制一些曲线。
这是我使用Python 3.5和cx_Freeze失败的示例(我认为这是我最先进的尝试,但我不限于特定的工具):我将我的3个文件放在一个目录中,在那里一切都被痛苦地安装了(使用anaconda)。我添加了一个名为“setup.py”的文件,对于cx_Freeze来说,它是:
我在Anaconda控制台中执行命令行'python setup.py build'(据我所知,这相当于命令提示符),在包含4个文件的目录中进行操作。经过很多次尝试和数小时的奋斗,构建看起来很好(100行没有错误消息并一直到最后),它创建了一个“build”目录,其中包含一个'exe.win-amd64-3.5'子目录,其中包含所有必需的内容以及.exe文件。但是,当我尝试运行此.exe时,什么也没有发生:没有错误消息,没有控制台或窗口打开,也没有快速的打开和关闭,我找不到日志...就是什么都没有。
我尝试将选项“base”从'Win32GUI'更改为base ='Console'和base = None。在这些情况下,我想有一个快速的控制台打开关闭,但我无法阅读,因为我找不到日志。
以下是其他几次尝试期间的结果: py2exe:结果与我的常规Python 3.6不兼容,因此我降级到了3.5。但即使在3.5中,在几行之后它也会冻结:再次没有错误消息,没有控制台或窗口打开,也没有快速的打开和关闭,我找不到日志…什么也没有。甚至没有'build'目录。另一次我也尝试了一个使用Python 3.4的替代品,但我得到了一个有关缺少'msvcr100.dll'的错误,我尝试按照论坛上的说明进行安装。当我最终获得修改系统目录的权限时,指令'regsvr32'失败了(这不是只为32位吗?但没有'regsvr64'...)。结果我最终放弃了。 pyinstaller:看更新 pynsist:pynsist的原则是您只能获得安装程序,而不是可执行文件。为什么不呢?只要我可以分发代码,我就不需要.exe文件。不幸的是,在构建安装程序(没有错误)并安装它(再次没有明显的错误)之后,该程序不起作用,就像在cx_Freeze情况下一样。
如果您想/需要,我可以添加脚本文件的链接。
更新:2017年8月18日上午9:20,根据建议,我开了一个新帖子涉及pyinstaller:build a .exe for Windows from a python 3 script importing theano with pyinstaller。我邀请您在那里回答有关pyinstaller的问题。如果我的问题通过py2exe或cx_freeze解决,则将标记此问题已解决。
更新:2017年9月2日下午2点,我终于通过pyinstaller成功构建了.exe文件。
- 导入pyqtgraph(使用pyqt5)
- 导入theano和pymc3
- 还要导入numpy,scipy,sys,os
- 打开一个由qt designer制作的简单GUI,并存储在“.ui”文件中
- 将分发到Windows 7+机器上
我有3个文件:2个“.py”文件(1个主文件和另一个包含一堆定义的文件)和描述GUI的“.ui”文件。脚本进行一些统计分析,然后绘制一些曲线。
这是我使用Python 3.5和cx_Freeze失败的示例(我认为这是我最先进的尝试,但我不限于特定的工具):我将我的3个文件放在一个目录中,在那里一切都被痛苦地安装了(使用anaconda)。我添加了一个名为“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'
)]
)
我在Anaconda控制台中执行命令行'python setup.py build'(据我所知,这相当于命令提示符),在包含4个文件的目录中进行操作。经过很多次尝试和数小时的奋斗,构建看起来很好(100行没有错误消息并一直到最后),它创建了一个“build”目录,其中包含一个'exe.win-amd64-3.5'子目录,其中包含所有必需的内容以及.exe文件。但是,当我尝试运行此.exe时,什么也没有发生:没有错误消息,没有控制台或窗口打开,也没有快速的打开和关闭,我找不到日志...就是什么都没有。
我尝试将选项“base”从'Win32GUI'更改为base ='Console'和base = None。在这些情况下,我想有一个快速的控制台打开关闭,但我无法阅读,因为我找不到日志。
以下是其他几次尝试期间的结果: py2exe:结果与我的常规Python 3.6不兼容,因此我降级到了3.5。但即使在3.5中,在几行之后它也会冻结:再次没有错误消息,没有控制台或窗口打开,也没有快速的打开和关闭,我找不到日志…什么也没有。甚至没有'build'目录。另一次我也尝试了一个使用Python 3.4的替代品,但我得到了一个有关缺少'msvcr100.dll'的错误,我尝试按照论坛上的说明进行安装。当我最终获得修改系统目录的权限时,指令'regsvr32'失败了(这不是只为32位吗?但没有'regsvr64'...)。结果我最终放弃了。 pyinstaller:看更新 pynsist:pynsist的原则是您只能获得安装程序,而不是可执行文件。为什么不呢?只要我可以分发代码,我就不需要.exe文件。不幸的是,在构建安装程序(没有错误)并安装它(再次没有明显的错误)之后,该程序不起作用,就像在cx_Freeze情况下一样。
如果您想/需要,我可以添加脚本文件的链接。
更新:2017年8月18日上午9:20,根据建议,我开了一个新帖子涉及pyinstaller:build a .exe for Windows from a python 3 script importing theano with pyinstaller。我邀请您在那里回答有关pyinstaller的问题。如果我的问题通过py2exe或cx_freeze解决,则将标记此问题已解决。
更新:2017年9月2日下午2点,我终于通过pyinstaller成功构建了.exe文件。
很不幸,我无法处理“theano”模块(我的情况需要“pymc3”模块),我不得不修改.py文件并放弃部分应用程序。有没有人可以帮我构建一个带有“theano”模块的Windows 7+的.exe文件?
py2exe
和cx_freeze
标签,以便那些专家看到您的问题。删除executable
和python-3.x
标签,它们没有太多作用。此外,我怀疑它与纯Python库pyqtgraph
无关。最好在单独的帖子中提出pyinstaller/pyqtgraph问题,并包括错误消息和适当的标签。 - titusjan