Python打包(问题记录,待解决)

news2024/11/27 20:36:34

引言

文章用于测试在Python3.8的版本,打包Obspy地震包,最后集成到PyQt5上。

部署或冻结应用程序是 Python 项目的重要组成部分, 这意味着捆绑所有必需的资源,以便应用程序找到它需要的一切 能够在客户端计算机上运行。 但是,由于大多数大型项目不基于单个 Python 文件,因此分发这些 应用程序可能是一个挑战。

以下是您可以使用的一些分发选项:

  1. 发送包含应用程序内容的普通 ZIP 文件。

  2. 构建一个合适的 Python 包(轮子)。

  3. 将应用程序冻结为单个二进制文件或目录。

  4. 提供本机安装程序(微星,dmg)

如果选择选项 3,请考虑使用以下工具之一:

  • FBS

  • PyInstaller

  • cx_Freeze

  • py2exe

  • py2app

  • 公文包

由于Qt for Python是一个跨平台的框架,我们专注于三大解决方案。 Qt支持的平台:Windows,Linux和macOS。

下表总结了对这些打包工具的平台支持:

请注意,只有 fbscx_Freeze、公文包(briefcase)和 PyInstaller 满足我们的跨平台要求。

由于这些是命令行工具,因此您需要特殊的钩子或脚本来处理资源 例如图像、图标和元信息,然后再将它们添加到您的包中。此外 这些工具不提供更新应用程序包的机制。

要创建更新包,请使用 PyUpdater,这是一个工具 围绕 PyInstaller 构建。

fbs 工具为用户提供了一个很好的 UI 来安装 申请分步。

 注意:
        仅 Qt for Python 5.12.2 及更高版本支持部署。

打包代码如下

from obspy import read,Stream   # 从obspy模块中导入read函数
#read函数
# 1. 可以传入一个seed或者mseed文件,表示从文件中读取数据
# 2. 不传参数,模块会自动生成一个地震数据流对象,这里我们传入一个文件用于测试
pathname = r"JS.201508301302.0002.seed"
st = read(pathname,format="mseed") # 指定文件的类型为mseed格式
print(st)

fbs部署

FBS 为打包、创建安装程序和签名提供了一个强大的环境 应用。它还允许您管理应用程序的更新。由于 fbs 基于 PyInstaller,它支持Linux,macOS和Windows。

有关更多详细信息,请参阅 fbs 教程和 fbs 手册。

1.1fbs安装

pip install fbs

fbs的免费版本仅支持Python 3.5和3.6。

请从获取fbs Prohttps://build-system.fman.io/pro.

本人作者Python版本为3.8,好了,用不了,下一个

pip uninstall fbs

2 Pyinstaller

2.1安装

pip installer pyinstaller

2.2打包命令

pyinstaller 文件路径名

测试过,打包Obspy模块失败,报错信息粘贴如下,有成功的小伙伴可以分享一下成功的经验

 大概的报错信息是:不支持MSEED类型的数据

3 cx_Freeze

3.1 安装

pip install cx_freeze

3.2 冻结应用程序

有三个选项可以使用cx_Freeze:

  1. 使用 cxfreeze 脚本。

  2. 创建 setup.py 脚本以生成项目。

  3. 直接使用模块类(用于高级目的)。

以下部分介绍前两个用例。

3.2.1使用可执行文件

cxfreeze 文件名

运行报错,Java的问题?看不懂,下一个 

3.2.2 使用安装工具脚本

对于此过程,您需要一个名为 setup.py 的附加脚本:

import sys
from cx_Freeze import setup, Executable

setup(name = "MyApp",
      version = "0.1",
      description = "My GUI App",
      executables = [Executable("hello.py")])

报错一样 

pip uninstall cx_freeze

4 Briefcase

Briefcase是一种打包工具,可让您为 Python 应用程序创建独立包。它支持以下安装程序格式:

  • 适用于 macOS 的.app应用程序捆绑包

  • 适用于 Windows 的 MSI 安装程序

  • AppImage for Linux

有关更多详细信息,请参阅官方文档。

4.1 安装

pip install briefcase

TMD用了这命令似乎他把Python的pip包给卸载了

 4.2 重新生成

安装pip 

python -m ensurepip --upgrade

更新pip

python -m pip install --upgrade pip

安装 Briefcase

pi'p install  Briefcase

你还需要:linux上的docker,windows上的WixToolset,

 报错了,没搞懂,应该是我没安装WixToolset的原因

坑一大堆,凉凉了,先记录一下吧,以后有机会在搞一下。

参考链接:Qt for Python Deployment — Qt for Python

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/143029.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Python Unet的医学影像分割系统源码,含皮肤病的数据及皮肤病分割的模型,用户输入图像,模型可以自动分割去皮肤病的区域

手把手教你用Unet做医学图像分割 我们用Unet来做医学图像分割。我们将会以皮肤病的数据作为示范,训练一个皮肤病分割的模型出来,用户输入图像,模型可以自动分割去皮肤病的区域和正常的区域。废话不多说,先上效果,左侧…

JAVA语言基础语法——JVM虚拟机默认处理异常的方式,try...catch捕获异常

1.JVM默认的处理方式 a.把异常的名称,异常原因及异常出现的位置等信息输出在了控制台 运行结果如下: b.程序停止执行,异常下面的代码不会再执行了 2.try...catch捕获异常(自己处理,捕获异常&am…

数学建模-相关性分析(Matlab)

注意:代码文件仅供参考,一定不要直接用于自己的数模论文中 国赛对于论文的查重要求非常严格,代码雷同也算作抄袭 如何修改代码避免查重的方法:https://www.bilibili.com/video/av59423231 //清风数学建模 一、基础知识 1.皮尔逊…

Qt之Json操作demo

一、JSON简介: JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,使用JavaScript语法来描述数据对象,但是JSON仍然独立于语言和平台。JSON解析器和JSON库支持许多不同的编程语言,被广泛用于Internet上的数据交换格式。…

多线程高级(线程状态、线程池、volatile、原子性、并发工具)

1.线程池 1.1 线程状态介绍 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。线程对象在不同的时期有不同的状态。那么Java中的线程存在哪几种状态呢?Java中的线程 状态被定义在了java.lang.Thread.State…

Java程序:jstack

前言 如果有一天,你的Java程序长时间停顿,也许是它病了,需要用jstack拍个片子分析分析,才能诊断具体什么病症,是死锁综合征,还是死循环等其他病症,本文我们一起来学习jstack命令~ jstack 的功能…

阳康后的第一篇博客,先来几道恶心二进制编程题

目录 一、统计二进制中1的个数 二、打印整数二进制的奇数位和偶数位 三、两个整数二进制位不同个数 一、统计二进制中1的个数 这是一道牛客网OJ题,感兴趣的话可以先做一遍再看解析哦 -> 牛客网的OJ链接 注意:上面的牛客网是接口型,不需…

Vagrant管理已存在的虚拟机

起因 某天打开VirtualBox后,发现之前创建的虚拟机都没了,后将虚拟机从本地磁盘又重新导入,但是发现使用 vagrant up 会创建新的虚拟机,而我要用vagrant管理已存在的虚拟机,就是 vagrant up的时候,我需要启动…

MySQL数据库:常用数据类型

一、整形和浮点型 数据类型大小说明对应C类型bit(n)n指定比特位数,默认1位比特位数,n范围1-64;存储数值范围2-2^n-1char[]tinyint1字节signed charsmallint2字节short intint4字节intbigint8字节long long intfloat(m,d)4字节单精度&#xf…

【前端】CSS基础

一、CSS基础 1.1CSS的介绍 CSS:层叠样式表(Cascading style sheets) CSS作用是什么?? 1.2CSS语法规则 写在哪里? CSS是style标签中,style标签一般写在head标签里面,title标签下…

真的强,又一个开源项目,杀疯了

最近,AI大模型连续火爆出圈,人工智能生成模型(AIGC)的热度尚未褪去,聊天机器人ChatGPT便引发全网热议,两周吸引百万用户。还有卷趴一半程序员的AlphaCode,生成全新蛋白质的ESM2等,不…

TypeScript,终于在实际项目中用到了泛型。

终于在实际项目中用到了泛型 里程碑式的纪录,终于不是anyScript了,代码写完只有一个any 应用 项目中组件化了这么一个东西 功能描述: 传进去一个数组,有个名,有个key,渲染成上图的div样式点击之后&#…

Triple 协议支持 Java 异常回传的设计与实现

作者:陈景明 背景 在一些业务场景,往往需要自定义异常来满足特定的业务,主流用法是在catch里抛出异常,例如: public void deal() {try{//doSomething ...} catch(IGreeterException e) {...throw e;} }或者通过…

Python面向对象(九)

python学习之旅(九) 👍查看更多可以关注查看首页或点击下方专栏目录 一.什么是面向对象 万物皆对象 现实世界的事物都有属性和行为,可在程序中抽离为类来描述现实世界的事物属性和行为。 使用类充当程序内现实事物的“设计图纸”,基于图纸(类)生产实体…

10. 正则表达式匹配

题目链接:https://leetcode.cn/problems/regular-expression-matching/从暴力递归到动态规划,对于状态转移方程不容易推导出来的可以先从递归进行尝试各种策略,最后再从暴力递归转为动态规划,这种尝试方式容易求解dp初始值以及dp更…

数据结构-考研难点代码突破 (图关键路径完全解析(流程+代码) - C++代码)

考研在关键路径上的考察以流程为主 文章目录1. AOE网2. 关键路径问题解决流程C代码1. AOE网 首先区分AOV网&#xff1a; AOV网∶若用DAG 图&#xff08;有向无环图&#xff09;表示一个工程&#xff0c;其顶点表示活动&#xff0c;用有向边<Vi&#xff0c;Vj>表示活动 V…

【ESP32+freeRTOS学习笔记-(五)队列Queue】

目录1、什么是队列Queue2、队列的多任务特性2.1 多任务的访问&#xff1a;2.2 队列读取阻塞&#xff1a;2.3 写队列阻塞&#xff1a;2.4 阻塞于多个队列&#xff1a;3、队列的使用3.1 创建队列--The xQueueCreate() API3.2 写入队列3.3 从队列中接收数据3.4 删除队列4、队列集4…

ReactDOM.render在react源码中执行之后发生了什么?

ReactDOM.render 通常是如下图使用&#xff0c;在提供的 container 里渲染一个 React 元素&#xff0c;并返回对该组件的引用&#xff08;或者针对无状态组件返回 null&#xff09;。本文主要是将ReactDOM.render的执行流程在后续文章中会对创建更新的细节进行分析&#xff0c…

MATLAB-plot3/ezplot3三维绘图

&#xff08;1&#xff09; plot3是三维绘图的基本函数&#xff0c;调用格式如下。1、plot3( X,Y,Z):绘制简单的三维曲线&#xff0c;当X、Y、Z是长度相同的向量时&#xff0c;plot3命令将绘制以向量X、Y、Z为(x, y,z)坐标值的三维曲线;当X、Y、Z是mn矩阵时,plot3命令将绘制m条…

Android 虚拟分区详解(四) 编译开关

Android Virtual A/B 系统简称 VAB,我将其称为虚拟分区。 本系列文章基于 Android R(11) 进行分析,如果没有特别说明,均基于代码版本 android-11.0.0_r46 请已经购买《Android 虚拟分区》专栏的朋友加我 wx 进 "虚拟分区专栏 VIP 答疑"群,作为本专栏文章的附加服…