如何编译使用python 3.8的PyQt5程序

2024-06-22

我正在尝试将一个简单的 PyQt5 程序编译成一个 EXE 文件。我一直在尝试使用fbs为此,但我没有运气。还有另一种简单的方法可以完成我想做的事情吗?

如果建议使用 pyinstaller,请向我解释具体如何操作。我不太擅长像“Just use pyinstaller”这样的模糊说明,而且它们有一个 wiki 的链接。这对我没有帮助,因为我已经去过那里并且不明白它。

任何帮助是极大的赞赏。

如果有帮助的话这是我的 main.py 文件:

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'MainMenu.ui'
#
# Created by: PyQt5 UI code generator 5.13.2
#
# WARNING! All changes made in this file will be lost!


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(422, 350)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.mmlbl = QtWidgets.QLabel(self.centralwidget)
        self.mmlbl.setGeometry(QtCore.QRect(30, 20, 131, 41))
        font = QtGui.QFont()
        font.setPointSize(24)
        font.setItalic(False)
        self.mmlbl.setFont(font)
        self.mmlbl.setObjectName("mmlbl")
        self.Updates_button = QtWidgets.QPushButton(self.centralwidget)
        self.Updates_button.setGeometry(QtCore.QRect(20, 70, 181, 31))
        self.Updates_button.setAcceptDrops(False)
        self.Updates_button.setObjectName("Updates_button")
        self.fwlbutton = QtWidgets.QPushButton(self.centralwidget)
        self.fwlbutton.setGeometry(QtCore.QRect(20, 110, 181, 31))
        self.fwlbutton.setObjectName("fwlbutton")
        self.rmvprosoftbutton = QtWidgets.QPushButton(self.centralwidget)
        self.rmvprosoftbutton.setGeometry(QtCore.QRect(20, 150, 181, 31))
        self.rmvprosoftbutton.setObjectName("rmvprosoftbutton")
        self.auditbutton = QtWidgets.QPushButton(self.centralwidget)
        self.auditbutton.setGeometry(QtCore.QRect(20, 190, 181, 31))
        self.auditbutton.setObjectName("auditbutton")
        self.basicConfbutton = QtWidgets.QPushButton(self.centralwidget)
        self.basicConfbutton.setGeometry(QtCore.QRect(220, 190, 181, 31))
        self.basicConfbutton.setObjectName("basicConfbutton")
        self.UserGroupsButton = QtWidgets.QPushButton(self.centralwidget)
        self.UserGroupsButton.setGeometry(QtCore.QRect(220, 70, 181, 31))
        self.UserGroupsButton.setObjectName("UserGroupsButton")
        self.malrembutton = QtWidgets.QPushButton(self.centralwidget)
        self.malrembutton.setGeometry(QtCore.QRect(220, 150, 181, 31))
        self.malrembutton.setObjectName("malrembutton")
        self.servsetbutton = QtWidgets.QPushButton(self.centralwidget)
        self.servsetbutton.setGeometry(QtCore.QRect(220, 110, 181, 31))
        self.servsetbutton.setObjectName("servsetbutton")
        self.srchmedbutton = QtWidgets.QPushButton(self.centralwidget)
        self.srchmedbutton.setGeometry(QtCore.QRect(20, 230, 181, 31))
        self.srchmedbutton.setObjectName("srchmedbutton")
        self.quit_button = QtWidgets.QPushButton(self.centralwidget)
        self.quit_button.setGeometry(QtCore.QRect(300, 260, 81, 41))
        self.quit_button.setObjectName("quit_button")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 422, 18))
        self.menubar.setObjectName("menubar")
        self.menuAbout = QtWidgets.QMenu(self.menubar)
        self.menuAbout.setObjectName("menuAbout")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.actionAbout_Creator = QtWidgets.QAction(MainWindow)
        self.actionAbout_Creator.setObjectName("actionAbout_Creator")
        self.actionHow_To_Use = QtWidgets.QAction(MainWindow)
        self.actionHow_To_Use.setObjectName("actionHow_To_Use")
        self.menuAbout.addAction(self.actionAbout_Creator)
        self.menuAbout.addAction(self.actionHow_To_Use)
        self.menubar.addAction(self.menuAbout.menuAction())

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Apple CIDR Script Runner"))
        self.mmlbl.setText(_translate("MainWindow", "Main Menu"))
        self.Updates_button.setText(_translate("MainWindow", "Updates"))
        self.fwlbutton.setText(_translate("MainWindow", "Firewall Settings"))
        self.rmvprosoftbutton.setText(_translate("MainWindow", "Remove Prohibited Software"))
        self.auditbutton.setText(_translate("MainWindow", "Audit System"))
        self.basicConfbutton.setText(_translate("MainWindow", "Basic Configurations"))
        self.UserGroupsButton.setText(_translate("MainWindow", "User / Group Settings"))
        self.malrembutton.setText(_translate("MainWindow", "Malware Removal"))
        self.servsetbutton.setText(_translate("MainWindow", "Services Settings"))
        self.srchmedbutton.setText(_translate("MainWindow", "Search For Prohibited Media"))
        self.quit_button.setText(_translate("MainWindow", "Quit"))
        self.menuAbout.setTitle(_translate("MainWindow", "Help"))
        self.actionAbout_Creator.setText(_translate("MainWindow", "About Creator"))
        self.actionHow_To_Use.setText(_translate("MainWindow", "How To Use"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

编辑:2020 年 8 月 19 日

我已经能够成功地将我的 python 程序编译成EXE使用名为的程序创建文件auto-py-to-exe https://pypi.org/project/auto-py-to-exe/ https://pypi.org/project/auto-py-to-exe/。该程序使用 pyinstaller 并在浏览器中创建 GUI pyinstaller 配置页面。 (这使得设置 pyinstaller 命令变得更加容易)

Here is what it looks like when running: enter image description here

您所要做的就是填写您的信息并点击Convert .PY to .EXE

另外,我建议您设置编译后的 .exe 的输出位置,以便您可以轻松找到它。

还有一件事。确保执行此操作时,您正在处理的项目与安装 python 的硬盘位于同一硬盘上。例如,如果您在 Windows 上的 C: 驱动器上安装了 python,而您的 python 项目位于外部硬盘驱动器上,则它将无法工作。将您的项目移至桌面或 C: 驱动器上的某个位置。

希望这是有道理的,祝你好运!


除非你绝对需要 python 3.8,否则你可以使用 still usefbs构建您的应用程序。

fbs可与 Python 一起使用,最高可达 3.6.x,因此最直接、最快捷的方法是使用虚拟环境。

这是目前我为 macOS 和 win10 构建和分发 fbs/PyQt5/python36 应用程序的工作流程。我还建议在您的 fbs 项目中包含所有依赖项./requirements/base.txt为了更好/内置项目可移植性和文档通过。pip install -r ./requirements/base.txt.

Steps

  1. Install 蟒蛇3.6.x https://www.python.org/downloads/release/python-368/
  2. Install virtual environment of your choice
    • pip install virtualenv
  3. Create & start virtual environment with specific python version
    • virtualenv -p C:/Python36/python.exe venv
    • start ./venv/Scripts/activate.bat(你可能必须在cmd.exe)
    • 您的 cmd 提示符现在看起来应该有所不同(即(venv) C:\Users>)
  4. Run fbs app again to make sure no compiler issues with python 3.6.x
    • fbs run
    • 修复任何新的编译器/语法问题
  5. If all goes well, attempt to freeze the app again
    • fbs freeze

python /questions/tagged/pythonfbs /questions/tagged/fbspython-3.6 /questions/tagged/python-3.6pyqt5 /questions/tagged/pyqt5

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

如何编译使用python 3.8的PyQt5程序 的相关文章

  • X 轴刻度标签按年份,X 轴网格线按财政季度

    我试图将 x 轴刻度标签设置为年份 但将网格线设置为财政季度 数据很简单 只是一个groupby date count 见下文 每个日期都有一个计数 我将其绘制为线图 rc rc form Bakken rc tgt oil groupby
  • 当遵循文档代码时,Python 多处理返回 AttributeError [重复]

    这个问题在这里已经有答案了 我决定尝试使用多处理器模块来帮助加速我的程序 为了弄清楚这一点 我尝试使用有关多处理的官方 python 文档中的一些代码示例 第一次尝试 介绍 https docs python org 3 library m
  • Java 类范围和库

    我正在创建一个 Java 库 作为最终产品 打算将此 jar 分发给开发人员 我正在从 Objective C 翻译 我的库 在其中我控制开发人员可以使用哪些类头文件 换句话说 我只向开发人员公开他们可以处理的几个类 在我的 Java 库中
  • Django:NoReverseMatch at /'myapp'不是注册的命名空间

    我在模板渲染期间遇到此错误 我想做的是允许用户上传 csv 然后将数据处理到模型中 第 109 行出错 myapp 不是已注册的命名空间 这是我的第 109 行代码
  • 使用 selenium 和 python 在网页网格中抓取 javascript 数据

    我的问题是我需要包含网站子域的网格中的所有数据https applipedia paloaltonetworks com https applipedia paloaltonetworks com 包含名称 类别 子类别 风险 技术的数据
  • Python Flask 删除请求

    我正在开发一个 Python 应用程序并使用 Flask 这是我的 DELETE 函数 app route DeleteMessage methods DELETE def DeleteMessage messages Message qu
  • Python:访问另一个类中一个类的属性和方法

    假设我有两个 A 类和 B 类 Class A A s attributes and methods here Class B B s attributes and methods here 现在我可以评估 B 类对象中 A 的属性 如下所
  • 为什么Flask后台线程获取错误的数据库信息?

    为了将实时数据库信息推送到客户端 我在服务器端使用flask socketio 通过使用websocket将所有实时数据库信息推送到客户端 我的视图文件有一个片段 from models import Host from flask soc
  • 使用 Python 访问内存映射文件

    我希望利用激战 2 中的内存映射文件 该文件旨在链接到 Mumble 以获得位置音频 该文件包含有关字符坐标的信息和其他有用的信息 我已经能够使用此脚本访问坐标信息 import mmap import struct last while
  • 为什么我的字符串中出现不需要的换行符?

    这应该很简单 这很愚蠢 但我无法让它发挥作用 我有一个在读取文件时定义的标头 if gene env in line or gene HIV2gp7 in line header line 现在这个标题看起来像 gt lcl NC 0018
  • 如何在Python中将N毫秒添加到日期时间

    我正在设置一个日期时间变量 fulldate datetime datetime strptime date time Y m d H M S f 其中日期和时间是适合日期时间性质的字符串 如何将此日期时间增加 N 毫秒 Use timed
  • Python父类访问子私有变量

    以下代码会生成错误 class A object def say something self print self foo print self bar class B A def init self self foo hello sel
  • 折叠 numpy 数组除前两个维度之外的所有维度

    我有一个可变维度的 numpy 数组 例如它可以具有以下形状 64 64 64 64 2 5 64 64 40 64 64 10 20 4 我想要做的是 如果维数大于 3 我想将其他所有内容折叠 堆叠到第三维中 同时保留顺序 因此 在我上面
  • numpy.polyval() 的反函数

    我想知道 np polyval 是否有一个方便的反函数 我在其中给出 y 值并求解 x 我知道我可以做到这一点的一种方法是 import numpy as np Set up the question p np array 1 1 10 y
  • Python httplib 和 POST

    我目前正在使用别人编写的一段代码 它用httplib向服务器发出请求 它以正确的格式提供所有数据 例如消息正文 标头值等 问题是 每次尝试发送 POST 请求时 数据都在那里 我可以在客户端看到它 但没有任何内容到达服务器 我已经阅读了库规
  • Spacy-nightly (spacy 2.0) 问题“thinc.extra.MaxViolation 大小错误”

    显然成功安装了 spacy nightly spacy nightly 2 0 0a14 和英语模型 en core web sm 后 我在尝试运行它时仍然收到错误消息 import spacy nlp spacy load en core
  • pandas groupby 中两个系列的最大值和最小值

    是否可以从 groupby 中的两个系列中获取最小值和最大值 例如下面的情况 分组时c 我怎样才能得到最小值和最大值a and b同时 df pd DataFrame a 10 20 3 40 55 b 5 14 8 50 60 c x x
  • Maya python 连接选择的属性

    我一直在尝试制作一个简单的脚本 它将采用两个视口选择 然后基本上将第二个视口的旋转连接到第一个 我不确定如何正确地从视口选择中为对象创建变量 这是我的尝试 但不起作用 import maya cmds as cmds sel cmds ls
  • 在 Python 中为非唯一列表创建虚拟列

    目前我有下一个数据框 import pandas as pd df pd DataFrame ID 1 2 3 4 5 col2 a b c c d e f f b f a c b b a b print df ID c
  • 获取 Flask 中没有端口的请求主机名

    我刚刚设法使用 Flask 获取我的应用程序服务器主机名request host and request url root 但这两个字段都返回请求主机名及其端口 我想使用仅返回请求主机名的字段 方法 而无需进行字符串替换 如果有 没有 We

随机推荐

  • 使用 pythonwhois 测试域名可用性

    我使用成功pythonwhois 安装有pip install 检查 com 域的可用性 import pythonwhois for domain in aaa com bbb com details pythonwhois get wh
  • 如何在 R 中使用 glm 循环多次曝光和结果以及不同模型?

    下面的代码当前针对每个结果的每次曝光 每个结果 3 次曝光 运行未经调整的 glm 并将结果导出到列表中 对于每次曝光 我需要 3 个模型 model 1 未调整 我们目前有 model 2 针对 cov1 进行调整 model 3 针对
  • 矢量可绘制图像视图上的洪水填充算法

    我想创建这样的应用程序 洪水填充算法 https stackoverflow com q 9748206 4535930 我应用了该代码 它可以很好地处理 JPG 或 PNG 文件 但我想将该算法与 Vector 可绘制图像视图一起使用 V
  • 第二次运行程序返回 EADDRINUSE 进行绑定 [重复]

    这个问题在这里已经有答案了 可能的重复 进程退出时释放绑定端口 https stackoverflow com questions 548879 releasing bound ports on process exit Windows 和
  • Facebook API:无法在 Android 上登录

    我正在尝试使用 Facebook API 在 Android 上实现 Facebook 登录 我已经按照方法做了一切Facebook 登录流程 http developers facebook com docs android login
  • 如何在 VB.NET 中对数组进行 JSON 编码?

    我需要为我正在使用的例程传回 JSON 结果 在VB NET 数组如何进行JSON编码 Dim serializer as New JavaScriptSerializer Dim arrayJson as String serialize
  • 在 Holoviews/Datashader 中更改分类数据的颜色图

    我正在尝试使用 Datashader 和 Holoviews 可视化分类空间数据 类似于https anaconda org jbednar census hv dask notebook https anaconda org jbedna
  • Rails 5 form_for 与复选框数组

    我使用的是 PostgreSQL 数据库和 Rails 5 0 6 我尝试为我工作的学校构建一个课程分配 WebApp 对于每门课程 教师都可以选择允许访问该课程的形式 迁移文件 def up create table courses do
  • 基于布尔值的淡入/淡出

    我想知道我是否真的必须写 if status status image id fadeIn else status image id fadeOut 或者有一个函数可以提供我的布尔状态 例如 status image id fade sta
  • UIView ClipsToBounds 属性:它会提高性能吗?

    文档说clipsToBounds的财产UIView会将绘图剪裁到边界 或更准确地说subView不能在范围之外绘制superView 听起来不错 但这在实践中意味着什么 如果我将其设置为YES 那么我的subView将自动只绘制不在边界之外
  • jstl 中的多个项目的迭代

    我需要在 jstl 中同时迭代 3 个列表 为了迭代单个列表 我们使用
  • jQuery 1.4.x 和 @ 符号

    我曾经使用这个脚本进行 jquery 电子邮件混淆 replaceAt replaceWith obfuscate each function this attr href mailto this text a class obfuscat
  • 如何在xamarin.android中将dp转换为px?

    我想将 dp 转换为 pxC code in xamarin android 但我能找到的只是java代码在 android studio 中xamarin 有一些问题 我尝试使用等效项 例如使用 Resources 而不是 getReso
  • C++包含整个C语言吗? [复制]

    这个问题在这里已经有答案了 我在教程中读到 C 包含整个 C 编程语言 不过我也读过 在一些地方像这样 https stackoverflow com questions 598552 should i learn c before lea
  • Symfony 框架 - 将西里尔文数据从装置加载到数据库中

    如何将包含西里尔文数据的夹具文件中的数据加载到数据库中 我已经尝试过了 但是数据库中的数据被转换为 符号 我的装置文件以 UTF 8 编码保存 你使用 MySQL 吗 您可能需要更改数据库中表的排序规则和 或字符集 A 整个部分都存在于 M
  • C#:如何在调用时触发事件的方法上创建属性?

    在 C 或 NET 中 是否有一种方法可以在方法上创建一个属性 以便在调用该方法时触发事件 理想情况下 我能够在调用该方法之前和之后运行自定义操作 我的意思是这样的 TriggersMyCustomAction public void Do
  • Django 未处理的异常

    它在 DEBUG True 模式下运行 有时遇到错误时它会抛出带有回溯信息的错误消息 但有时它只显示以下几行 Unhandled Exception An unhandled exception was thrown by the appl
  • 仅当程序成功时如何重定向程序的输出?

    当我的程序之一返回非零退出代码时 我想避免重定向其输出 这可能吗 如果可以 我该怎么做 我失败的尝试 echo foo gt file false cat gt file 这导致file是空的 我想要的行为只是调整file当程序成功时 我还
  • 在 numpy 数组的交替行和列中插入值

    我需要插入任意数量的零来交替 numpy 数组的行和列 例如 假设我们要在所有备用列和行中插入 1 个零 Input gt 1 2 3 4 5 6 7 8 9 output gt 1 0 2 0 3 0 0 0 0 0 4 0 5 0 6
  • 如何编译使用python 3.8的PyQt5程序

    我正在尝试将一个简单的 PyQt5 程序编译成一个 EXE 文件 我一直在尝试使用fbs为此 但我没有运气 还有另一种简单的方法可以完成我想做的事情吗 如果建议使用 pyinstaller 请向我解释具体如何操作 我不太擅长像 Just u