引言

文章用于测试在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, Executablesetup(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

Python打包(问题记录,待解决)相关推荐

  1. python打包中文报错,解决python3+Gooey使用pyinstaller打包时无法输出中文的问题

    问题出处 代码如下: # -*- coding: utf-8 -*- from gooey import Gooey, GooeyParser def run(keywords): print(key ...

  2. python打包exe之打包深度学习模型踩坑记录及其解决办法。

    在现实生活中,有时候我们写的程序需要发给小伙伴用,而小伙伴没有python,这时候我们需要将程序打包成exe文件发给小伙伴用. 今天讲下打包深度学习模型 打包一般要用到cmd命令行,要求cmd能执行p ...

  3. python打包exe 之打包sklearn模型中的各种坑及其解决方法。

    之前学习了如何打包,如何建立虚拟环境打包,以及如何带资源打包exe. python打包成exe 可执行文件 .教程 使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标, ...

  4. 解决 Python打包成exe 文件过大问题的一些方法

    前言 之前有做过Python的pyqt桌面应用,当时每次更新打包的时候整个文件下来都需要300~400M,但是一直没有找到合适的方法解决,而是尽量Python少安抓库包,但效果一般,最近找到了解决方法 ...

  5. Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子

    Python打包工具Pyintealler打包py文件为windows exe文件过程及踩坑记录+实战例子 目录 Python打包工具Pyintealler打包py文件为windows exe文件过程 ...

  6. 使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标,多个py文件打包exe)

    我们编写的程序可以发给其他小伙伴使用,但是其他小伙伴不一定安装有python.这时候就需要用到打包啦.打包可以将程序打包成exe文件.然后小伙伴在windows平台里就可以运行(无需python).直 ...

  7. python打包软件后报错 :SyntaxError: Non-UTF-8 code starting with ‘\x90‘ in file 的原因及解决方法

    本篇文章主要讲解,python打包软件后报错 :SyntaxError: Non-UTF-8 code starting with '\x90' in file 的原因及解决方法 作者:任聪聪 报错说 ...

  8. Python打包成exe,文件太大问题解决办法

    Python打包成exe,文件太大问题解决办法 原因 解决办法 具体步骤 情况一:初次打包 情况二:再次打包 原因 由于使用pyinstaller打包.py文件时,会把很多已安装的无关库同时打包进去, ...

  9. Python 打包的exe在Win7 不能运行的解决

    Python 打包的exe在Win7 不能运行的解决 原用PY3.8在WIN10下编写了一程序,结果大家都说WIN7运行不了,最后用虚拟机在WIN7+PY3.7环境下打包时,提示出错,发现原在PY3. ...

  10. 【Python打包成exe方法】——已解决导入第三方包无法打包的问题​

    前言 在我们写代码的过程中,我们开发的脚本一般都会用到一些第三方包,可能别人也需要用到我们的脚本,如果我们将我们的xx.py文件发给他,他是不能直接用的,他还需要安装python解释器,甚至还要安装我 ...

最新文章

  1. 从零开始搭建一个vue项目 -- vue-cli/cooking-cli(一)
  2. 关于在64位系统上,使用APlayer,运行报错“找不到指定的模块”
  3. BGP路由协议特性和三张表
  4. 【解决办法】read_csv()第一列作为index
  5. FreeMarker中文API手册(完整)
  6. idea Cannot Resolve Symbol 不能找到别的包中的类 能找到自己包中的类
  7. 人工智能实验评价指标_人工智能实验报告.pdf
  8. c51语言自定义头文件,C51语言头文件包括的内容有
  9. 多线程01,线程基础知识
  10. php 抓取网页图片
  11. Burp suite - Burp Clickbandit
  12. MySQL中的uuid函数是什么东西
  13. 百面机器学习 之 集成学习
  14. 2.1 分布式文件系统HDFS-使用
  15. 255%可用已接通电源_多路输出稳压电源电路
  16. linux panic机制
  17. 一次线上服务器cpu使用率超过1250%的排查与优化
  18. STM32+DRV8711驱动步进电机
  19. 「SDOI 2008」山贼集团
  20. ABP 详解系列9:基于ABP框架实现RBAC(角色访问控制)

热门文章

  1. android3 glide,Android Studio 第六十七期 - Android Glide3.7.0和3.8.0用法
  2. ubuntu下载安装TeamViewer
  3. 国足1-0韩国 热血球场想到了代码
  4. 一、安装Centos 6.5
  5. java小数点后保留7位_Java中如何保留小数点后两位
  6. PHP实现购物车以及取消(现金+满减+积分)订单
  7. 编写一个批量添加用户脚本
  8. 数据库还原dat备份文件,数据库还原失败System.Data.SqlClient.SqlError: 无法执行 BACKUP LOG,因为当前没有数据库备份
  9. IT系统架构概述(附下载)
  10. vue表单验证(验证是否是座机或手机号)