从 python 3 脚本构建适用于 Windows 的 .exe

2024-04-18

我想为 python 3 脚本构建一个可执行文件:

  • 导入 pyqtgraph (使用 pyqt5)
  • 导入 theano 和 pymc3
  • 还导入 numpy、scipy、sys、os
  • 打开一个用 qt 设计器制作并存储在“.ui”文件中的简单 GUI
  • 将分发到装有 Windows 7+ 的计算机上

我在几个小时内尝试了几种工具(py2exe、pyinstaller、pynsist、cx_Freeze),但每次都失败。我的“不太糟糕”的结果是使用 pyinstaller (见下文),没有 theano 部分(因此没有脚本的一部分)。谁能帮我 ?

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

这是我使用 python 3.5 和 cx_Freeze 失败的一个例子(我认为这是我做过的最先进的尝试,但我并不特别局限于这些工具):我将我的 3 个文件放在 Windows 机器上的一个目录中,其中一切都安装得很痛苦(用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'
        )]
    )

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

我尝试将“base”选项从“Win32GUI”更改为base=“Console”和base=None。在这些情况下,我猜想有一个快速的控制台打开关闭,我无法读取,因为我找不到日志。

以下是其他尝试中的一些其他不良结果:

  • py2exe:结果与我常用的python 3.6不兼容,所以我降级到3.5。但即使在 3.5 中,几行之后它就冻结了:再次没有错误消息,没有控制台或窗口打开,没有快速打开-关闭,我找不到日志......什么也没有。甚至没有“构建”目录。还有一次,我也尝试了 python 3.4 的替代方案,但出现了一个关于缺少“msvcr100.dll”的错误,我尝试按照论坛上的说明进行安装。当我最终获得修改系统目录的权限时,指令‘regsvr32’失败了(这不是只适用于32位吗?但没有‘regsvr64’…)。我最终放弃了

  • pyinstaller:查看更新

  • pynsist:pynsist 的原理是你不会得到可执行文件,而只会得到一个安装程序。为什么不 ?我不需要 .exe,只要我可以分发代码即可。不幸的是,在构建安装程序(没有错误)并安装它(再次没有可见错误)之后,程序没有给出任何内容,就像 cx_Freeze 情况一样。

如果您愿意/需要,我可以添加脚本文件的链接。


2017 年 8 月 18 日上午 9:20 更新

根据建议,我开了一篇关于 pyinstaller 的新帖子:从使用 pyinstaller 导入 theano 的 python 3 脚本构建适用于 Windows 的 .exe https://stackoverflow.com/questions/45750676/build-a-exe-for-windows-from-a-python-3-script-importing-pyqtgraph-and-opening.

我邀请您回答 pyinstaller 的问题。如果我的问题通过 py2exe 或 cx_freeze 解决,这个问题将被标记为已回答。


9月2日下午2点更新:

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

不幸的是,我未能处理“theano”模块(在我的情况下,“pymc3”模块需要该模块),我不得不修改 .py 文件并放弃部分应用程序。任何人都可以帮助我使用“theano”模块构建适用于 Windows 7+ 的 .exe 吗?


要创建 Python 程序的可执行文件,请在 CMD 中运行以下命令。首先,您需要安装 pyinstaller,使用以下命令:

pip install pyinstaller

然后执行以下操作来创建 Python 程序的一个可执行文件,首先,转到程序路径(使用cd) 您的 Python (.py) 文件所在的位置,然后:

pyinstaller -w -F YourPyFile
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 python 3 脚本构建适用于 Windows 的 .exe 的相关文章

  • 使用 Objective-C 进行 Windows 开发

    最近读了一篇关于 Objective C 的文章 我觉得它是一门相当简洁的语言 具有很多很酷的功能 我无意进行任何 iPhone 开发 但是我了解 GCC 能够编译 Objective C 代码 所以我想知道 Objective C 是 W
  • 如何检查python xlrd库中的excel文件是否有效

    有什么办法与xlrd库来检查您使用的文件是否是有效的 Excel 文件 我知道还有其他库可以检查文件头 我可以使用文件扩展名检查 但为了多平台性我想知道是否有任何我可以使用的功能xlrd库本身在尝试打开文件时可能会返回类似 false 的内
  • 保留完整姓氏,在 pandas 列中获取名字的首字母(如果有的话,还有中间名)

    我有一个 pandas 数据框 其中有一列表示几位网球运动员的姓氏和姓名 如下所示 Player 0 Roddick Andy 1 Federer Roger 2 Tsonga Jo Wilfred 我想保留完整的姓氏并获取姓名的首字母和中
  • PC 相当于 Coda 吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Python 中的流式传输管道

    我正在尝试使用 Python 将 vmstat 的输出转换为 CSV 文件 因此我使用类似的方法转换为 CSV 并将日期和时间添加为列 vmstat 5 python myscript py gt gt vmstat log 我遇到的问题是
  • sklearn 中的 pca.inverse_transform

    将我的数据拟合后 X 我的数据 pca PCA n components 1 pca fit X X pca pca fit transform X 现在 X pca 具有一维 当我根据定义执行逆变换时 它不是应该返回原始数据 即 X 二维
  • 在 Django OAuth Toolkit 中安全创建新应用程序

    如何将 IsAdminUser 权限添加到 Django OAuth Toolkit 中的 o applications 视图 REST FRAMEWORK DEFAULT PERMISSION CLASSES rest framework
  • 如何使用文本相似性删除 pandas 数据框中相似(不重复)的行?

    我有数千个数据 这些数据可能相似也可能不相似 使用 python 的默认函数 drop duplicates 并没有真正的帮助 因为它们只检测相似的数据 例如 如果我的数据包含类似以下内容怎么办 嗨 早上好 嗨 早上好 Python 不会将
  • 结构差异 sudo() run('sudo 命令')

    我想知道函数之间有什么区别sudo 和函数run sudo u user smth 文档上有 sudo 在所有运行方式上都是相同的 除了它总是换行 调用 sudo 程序中的给定命令以提供超级用户 特权 但有几次 sudo cmd 提示我输入
  • 如果在等待“read -s”时中断,在子进程中运行 bash 会破坏 tty 的标准输出吗?

    正如 Bakuriu 在评论中指出的那样 这基本上与BASH 输入期间按 Ctrl C 会中断当前终端 https stackoverflow com questions 31808863 bash ctrlc during input b
  • Gspread如何复制sheet

    在 Stackoverflow 上进行谷歌搜索和搜索后 我想我找不到有关如何复制现有工作表 现有模板工作表 并将其保存到另一个工作表中的指南 根据文档 有重复表 https gspread readthedocs io en latest
  • Python新式类和__subclasses__函数

    有人可以向我解释为什么这有效 在 Python 2 5 中 class Foo object pass class Bar Foo pass print Foo subclasses 但这不是 class Foo pass class Ba
  • 使用 python 绘制正值小提琴图

    我发现小提琴图信息丰富且有用 我使用 python 库 seaborn 然而 当应用于正值时 它们几乎总是在低端显示负值 我发现这确实具有误导性 尤其是在处理现实数据集时 在seaborn的官方文档中https seaborn pydata
  • 使用Python计算目录的大小?

    在我重新发明这个特殊的轮子之前 有没有人有一个很好的例程来使用 Python 计算目录的大小 如果例程能够很好地以 Mb Gb 等格式格式化大小 那就太好了 这会遍历所有子目录 总结文件大小 import os def get size s
  • 如何在 pandas 中使用 read_fwf 跳过空行?

    I use pandas read fwf http pandas pydata org pandas docs stable generated pandas read fwf htmlPython pandas 0 19 2 中的函数读
  • 使用“默认”环境变量启动新的子进程

    我正在编写一个构建脚本来解析依赖的共享库 及其共享库等 这些共享库在正常情况下是不存在的PATH环境变量 为了使构建过程正常工作 让编译器找到这些库 PATH已更改为包含这些库的目录 构建过程是这样的 加载器脚本 更改 PATH gt 基于
  • 将seaborn.palplot轴添加到现有图形中以可视化不同调色板

    将seaborn人物添加到子图中是usually https seaborn pydata org examples cubehelix palette html创建图形时通过传递 ax 来完成 例如 sns kdeplot x y cma
  • Anaconda 无法导入 ssl 但 Python 可以

    Anaconda 3 Jupyter笔记本无法导入ssl 但使用Atom终端导入ssl没有问题 我尝试在 Jupyter 笔记本中导入 ssl 但出现以下错误 C ProgramData Anaconda3 lib ssl py in
  • python 线程安全可变对象复制

    Is 蟒蛇的copy http docs python org 2 library copy html模块线程安全吗 如果不是 我应该如何在 python 中以线程安全的方式复制 deepcopy 可变对象 蟒蛇的GIL http en w
  • Apache Beam Pipeline 写表后查询表

    我有一个 Apache Beam Dataflow 管道 它将结果写入 BigQuery 表 然后我想查询该表以获取管道的单独部分 但是 我似乎无法弄清楚如何正确设置此管道依赖性 我编写的新表 然后想要查询 与一个单独的表连接以进行某些过滤

随机推荐

  • 无法使用 Visual Studio 2013 社区运行 Xunit

    我正在尝试让 XUnit 与 Visual Studio 2013 Community 版本 12 0 31101 00 Update 4 一起使用 我已经让 NUnit 工作了 所以我认为让 XUnit 工作起来会很简单 代码是 usin
  • java.net.ConnectException:无法连接到/127.0.0.1:9080领域对象服务器

    我在看到网站中的文档后刚刚安装了领域对象服务器 我创建了一个登录页面 android 并根据网站使用了同步用户设置 但我在创建时的 asynctask 显示了上述错误 这是我的代码 public class RealAsyncTask ex
  • 动态创建类属性

    我正在寻找一种方法来动态创建具有可通过典型实例表示法访问的特定属性的类 DynoOne createClass DynoOne props A B d DynoOne database XYZ d A d B 1 DynoTwo creat
  • 有没有办法获得总设备内存?我需要它来优化

    我有一个可以包含静态数据的 lrucache 这样即使我的应用程序在用户返回时关闭 他也可以更快地找到数据 然而 这需要大约 10 15 MB 的内存 所以我想创建一个像这样的 if 分支 if deviceOverallRAM gt tr
  • 从一个活动调用另一个活动中的方法

    我知道我们无法从另一个活动中的活动调用方法 我正在尝试找出解决这个问题的最佳方法 这是我的代码 这是我试图调用的方法 它在我的ScoreCard活动 public void numPlayerSetup int ids R id TextV
  • 更改文件创建日期不起作用

    我使用以下命令来更改文本文件的创建日期 using System IO DateTime newCreate new DateTime year month day hour minutes seconds File SetCreation
  • 在 JavaScript 中确定域名?

    使用有什么区别 if document domain toLowerCase indexOf domainName 1 and if window location href match 1 toLowerCase indexOf doma
  • 是否可以使用 content:// 作为 WebView 中

    我创建了一个ContentProvider 它导出我的 asset 目录中的文件 我使用 content url 来访问 WebView 中导出的内容 以下 HTML 按预期工作 img src 我正在尝试使用 mp3 音频文件的内容提供程
  • php 将变量绑定到旧 PHP 中的函数作用域

    我想将变量绑定到函数的作用域 我可以在 PHP 5 3 之后使用 use 关键字在 php 中执行此操作 但是如何在 PHP 5 3 以下的版本中执行等效操作 test use keyword function test use keywo
  • RDBMS 对 Golang 的影响 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我不会对这个关于我测试过的内容和数字运算的问题进行长篇大论 我对最新的实际练习表演更感兴趣 我已经阅读了大量的文章 其中一些非常怀疑 或者非常怀
  • Visual Studio 默认自动完成使用系统类型名称

    奇怪的问题 但我的老板有点老派 坚持在我们的编码标准中我们不使用 C 简写系统类型 他喜欢我们使用完整的系统名称 他喜欢事情变得冗长 我很乐意遵守这个标准 然而 几个月后开始让我恼火的是 Visual Studio 在完成代码时不喜欢遵守标
  • Android 如何从相机捕获两个连续的帧

    我正在尝试在 Android 设备上对光流进行编程 我的问题是从相机获取两个连续的帧 这是获取一帧的代码 mCamera setPreviewCallback new PreviewCallback public void onPrevie
  • Java 装饰器模式:我可以装饰受保护的方法吗?

    我想要Decorate 装饰器设计模式 一个通用的基类 但是我需要的方法Decorate受到保护 参见示例 public class AbstractActor public void act Delegates its actions t
  • 强制隐式调用的依赖类型解析

    我有一个包装特征 trait Wrapper T type Own F lt OwnThing F def ask F implicit own Own F 还有不同的实现 这里是一个例子 class CombinedWrapper A B
  • 暗淡和公共有什么区别?

    今天提出了一个关于范围的问题 这引起了我的思考 我一直了解 VBScript 范围以及如何声明全局和本地 我突然想到我从来没有使用过Public变量但倾向于使用Dim相反 在全局声明时 据我了解Dim是相同的Public 但如果是这样的话
  • PHP 密码的正则表达式 [重复]

    这个问题在这里已经有答案了 我在网上找到了一个脚本 它有一个 JavaScript 中的密码正则表达式 我仍然想使用它 但为了更安全 我也想使用 PHP 来验证我的密码 但我对正则表达式毫无用处 要求 必须至少 8 个字符 必须包含至少 1
  • 使用 sass 3 自定义 Bootstrap 5 颜色时出现无效 CSS 值错误

    我想用 SASS 更改 bootstrap 默认主题颜色 问题是当我更改颜色并编译时 它会给我无效的 CSS 值错误 我已阅读文档并在 YouTube 上看到了一些教程 但我看不出问题出在哪里 我正在使用 bootstrap 5 1 0 s
  • 此应用程序是否使用广告标识符 (IDFA)? - AdMob 6.8.0

    我目前正在将我的应用程序上传到 App Store Apple 询问我此应用程序是否使用 IDFA 我正在使用最新的 Admob SDK 或 6 8 0 但我不知道它是否使用 IDFA 如果使用 我应该点击哪些复选框 Image http
  • 调用重写的虚函数而不是重载

    假设我有这部分代码 include
  • 从 python 3 脚本构建适用于 Windows 的 .exe

    我想为 python 3 脚本构建一个可执行文件 导入 pyqtgraph 使用 pyqt5 导入 theano 和 pymc3 还导入 numpy scipy sys os 打开一个用 qt 设计器制作并存储在 ui 文件中的简单 GUI