pycharm python 程序打包相关

pycharm 项目打包制作安装包教程(pyinstaller/nuitka + nsis) pycharm 项目打包制作安装包教程(pyinstaller_nuitka + nsis) 阅读详情

前言

终于入门了python打包这个大话题,将目前学到的技能分享一下。


pycharm启动虚拟环境pipenv 缩小打包

和很多博客说的一样,打包那么大是因为打包了多余的库,因此想要缩小就需要一个干净的,没有多余的库的环境进行打包。也就是虚拟环境。
想要在 pycharm 启动虚拟环境,先要安装一个 pipenv。按下 win+r 后输入 cmd 打开命令面板,输入 pip install pipenv 即可安装。

安装后,我们需要得到名为 “pipenv.exe” 文件的路径,也就是 pipenv 虚拟环境的安装路径。查看的方法有很多,或许是能力原因本人试过的都不怎么好使,还是最朴素的方法最稳定:

在这里插入图片描述
是的,直接点开此电脑在右上角搜索文件即可(慢是慢了点但是亲测有效)!
然后我们打开 pycharm 选择新建项目

在这里插入图片描述

点击三角形符号, pycharm 就会为这个项目创建一个干净的虚拟环境。

在这里插入图片描述

然后选择好虚拟环境的类型,也就是上面安装的 pipenv。
如果pipenv可执行文件那一栏是空着的,那么就把上一步中得到的 “pipenv.exe” 的路径复制过去即可。
一切就绪,点击创建。

至此如果都成功,那么恭喜你得到了一个干净的python编程环境,在这个环境下打包是最小的。但是具体实现还有一些细节。

点击左下方栏目中的 python 软件包,那么将会显示在当前环境下安装的所有的库
在这里插入图片描述
可以发现非常的干净,只有三个库。但是这么点库是无法达成项目需求的,因此我们需要添加软件包到当前环境上。
在这里插入图片描述
这一步很重要,切记不要在本地的cmd pip install 安装第三方库后,直接在虚拟环境中使用,这样子库内还是会附带很多多余的东西,就丧失了使用虚拟环境的意义。

那么怎样在 pycharm 提供的虚拟环境下安装呢。

依旧是下方栏目,选择“终端”

在这里插入图片描述
然后就会出现一个类似cmd的控制台。或许这时候你就会迫不及待的在这里 pip install 各种各样的库,但是请注意,左上方这里显示了“本地”,这是本地的 cmd,并不是我们虚拟环境的。
在这里插入图片描述

那么怎么打开虚拟环境的 cmd 进行安装呢,操作步骤非常简单。
点击“本地”旁边的向下箭头,选择 “command prompt” ,然后就切换到了虚拟环境提供的 cmd 了。
在这里插入图片描述
在这里插入图片描述
我们最终在这个地方 pip install Pyinstaller 以及其他各种的库,然后在这里输入 Pyinstaller 命令打包即可。

这个方法打包后效果非常显著,本人一个用本地 cmd 打包 300M 的项目用了虚拟环境后只有 10M。


Pyinstaller 将资源与程序一同打包

相信大家编写的程序都经常需要调用存在本地的各种图片啊字体什么的对吧。但是直接 Pyinstaller 却不能将这些资源一起打包进 exe 文件里。也就是说,如果打包后的程序按照程序中的对应路径中找不到资源,那么就会报错。
那不行啊,如果我们的程序不是在本机运行,那么难不成我们还要把资源一起和exe到处移动,多难看啊?于是就想,如何将资源一起打包进一个exe中呢。

首先,直接 Pyinstaller 打包,项目目录下会新增两个文件夹:dist、build。把这两个都删了。
是的,把这次打包出来的exe也删了。

Pyinstaller 打包后还会产生一个文件 XXX.spec,文件名就是打包的程序名。
这个 spec 文件中包含着打包的所有信息。他也许长这样:

# -*- mode: python ; coding: utf-8 -*-


block_cipher = None


a = Analysis(
    ['XXX.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='XXX',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    icon=['XXX.ico'],
)

我们打包的信息里面应有尽有,最上面的['XXX.py'],是打包的程序名,最下面的 icon=['XXX.ico'],
是我们打包exe的图标。
既然我们在 Pyinstaller 时输入的信息里面都有,那么就可以利用这个文件,使我们的资源也加入打包队列。

binaries=[],就是用于打包资源的。
可以看到它默认是空的,如果我们要打包资源,就往里面增加元素即可。具体格式的话是一个二元组(url1,url2)

  • url1 是用字符串表示的要打包的资源的相对路径
  • url2 是用字符串表示的运行exe后要把资源解压到的文件夹的相对路径。如果想解压到根目录,那么url2就是 ‘.’(注意有点号)

例如我要将 logo.png 和 air_mitalic.ttf 一起打包进 exe 。其中,logo.png 和 air_mitalic.ttf 存放在项目的根目录,打包解压后我想把他们再次放到根目录,那么 spec 文件应该修改为

# -*- mode: python ; coding: utf-8 -*-


block_cipher = None


a = Analysis(
    ['function_vision.py'],
    pathex=[],
    binaries=[('air_mitalic.ttf','.'),('logo.png','.')],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
    noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.zipfiles,
    a.datas,
    [],
    name='function_vision',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    icon=['logo.ico'],
)

修改好 spec 文件后,我们直接打包 spec 文件。在 cmd 中输入 Pyinstaller XXX.spec 即可。注意不要加 -F 或 -D 和其他打包 .py 文件时的命令。

打包完之后仍然会出现一个存放在 dist 文件夹中的exe文件,但是我发现运行他是还是资源路径错误报错。
最终,在这篇博客中找到了解决方法。

Pyinstaller打包用spec添加资源文件,亲测可用

原来是因为打包后的资源解压到了一个奇怪的临时目录下面,因此原程序找不到。
那么我们就修改源程序。怎么改,我们使用前人的经验,在程序中写下一个路径解析函数

def resurce_path(relative_path):
    base_path=getattr(sys,'_MEIPASS',path.dirname(path.abspath(__file__)))  
    return path.join(base_path,relative_path)

每当在代码中需要调用资源的时候加上一个路径解析即可。

logo=pygame.image.load(resurce_path("logo.png"))

这样子,我们就可成功得到资源解压后所在的路径。

这个方法同样来自 Pyinstaller打包用spec添加资源文件,亲测可用,这里仅为引用。

亲测打包后的exe可以得到资源,这样子打包就免去了网上的一些 base64 转码法。

PyCharm打包可执行文件方法 前期准备:安装pyinstaller 方法一:在PyCharm中打包 点击底部的【Terminal】打开终端,输入命令 pyinstaller --console --onefile ***.py 或者输入命令 pyinstaller -F -w *.py 成功后在工程目录下/dist文件夹中会有打包好的exe文件 方法二:在源码所在目录下,进入DOS窗口,输入 pyinstaller -F -w *.py -F(注意大写)是所有库文件打包成一个exe,-w是不出黑色控制台窗口。 不加-F参. 阅读详情

相关推荐

Pycharm 给 python 程序打包EXE的配置和方法

本文介绍了使用PyInstaller将Python项目打包为Windows可执行文件(exe)的方法,重点以YOLOv8视觉项目为例。文章首先概述了PyInstaller的核心功能:支持跨平台打包、自动处理依赖、资源文件打包等。详细说明了打包流程:安装PyInstaller、生成spec配置文件、修改配置添加资源文件路径、重新打包等关键步骤。针对实践中遇到的模块缺失问题和Python版本兼容性问题,提供了具体解决方案,如通过hiddenimports添加动态导入模块、更换稳定Python版本等。通过实际项目

山云的专栏 2866

Pycharm中打包Python文件

Pycharm中打包Python文件,原创,简单易懂

Beatr1ce的博客 4843

Python 使用PyQt5进行界面程序开发

目的:使用PyQt5进行界面程序开发环境:问题:解决方案:步骤: 环境: 系统:win10 IDE: Pycharm 2018.1.4 Python版本: 3.6.4 问题: 之前进行Python界面程序开发使用的Tkinter ,生成界面较为粗糙,美化较复杂。 解决方案: 使用PyQt5进行界面开发,使用QSS进行界面样式美化,开发效率较高,复杂度小。 步骤: Pycharm 新建一个项...

icee 1万+

从零开始有图:pycharm实现打包成为无需python环境的exe文件

从零开始有图:pycharm实现打包成为无需python环境的exe文件

m0_74865737的博客 1万+

开发小工具,AI来帮你!

本文描述如何使用AI的编码能力帮助我们开发Windows小程序,从需求编写到代码调试,最后打包成为Windows环境可执行的小程序,不会编码没关系,本文教你学会制作小工具。

weixin_58978892的博客 1088

Tkinter+Flask+ThreeJS项目使用PyInstaller打包,做一个简简单单的表白程序!

今天简单做一个使用Tkinter+Flask+ThreeJS制作的小小的表白程序,代码使用pyinstaller打包,项目虽简单但若掌握其技术要领,则可自己魔改,向心爱之人表白!

m0_53707852的博客 1751

VS与PYCHARM的PYTHON-WINFORM开发环境搭建(QT5+PYINSTALLER)

概述 PYCHARM与VS都可以用以PYTHON开发,两个IDE说实话各有优点,反正我是两个同时用。本文就是介绍怎么用VS+PYCHARM用于WINFORM程序的开发 一、安装VS或PYCHARM 安装过程不再赘述,在VS2019安装后,自动安装了PYTHON3.7。为了统一环境,在PYCHARM的settings中使用VS的PYTHON运行环境。 二、安装组件 pip install PyQt5...

李小砍的技术博客 1944

Zynq7000双核裸机开发实战:如何安全实现共享内存与乒乓RAM设计

本文深入探讨了Zynq7000双核裸机开发中的共享内存与乒乓RAM设计,重点解析了核间通信的Cache一致性处理机制和硬件级实现方案。通过实战代码示例和性能优化技巧,帮助开发者解决双核运行中的访问冲突问题,提升嵌入式系统开发效率。

weixin_29191669的博客 375

python打包exe文件出错解决方案

Python——Pycharm打包exe文件 一、安装pyinstraller pip install PyInstaller 二.安装成功后,执行下面语句 pyinstaller -F 文件名 三.出错,错误信息如下: 程序中出现中文,运行的时候出现如下错误: 导致出错的根源就是编码问题。 F:\dasandeke\python\spider_three>pyins...

syh的博客 5599

从手机到单片机:聊聊ARM Cortex家族那些事,A、R、M系列到底有啥不同?

本文深入解析ARM Cortex家族的A、R、M三大系列处理器,揭示它们在性能、实时响应和能效方面的核心差异。从智能手机到汽车电子和物联网设备,Cortex-A、R、M各司其职,分别应对复杂运算、实时控制和超低功耗场景。通过技术指标对比和典型应用案例,帮助开发者理解如何根据DMIPS/MHz等关键参数选择适合的处理器架构。

weixin_31574149的博客 350

ADS RFpro 射频阻抗仿真步骤

导入器件后,在库里面选取器件的对应模型,如图所示我们选取10pf 系统自带的村田模型。选取网络上的器件,拖入到下面component Models。导入成功后,截取需要仿真的区域(不截取仿真时间会非常长),可以生成对应如下原理图,通过原理图继续调整仿真。图上找到需要仿真链路上的网络,右键设置为信号。的叠层信息,按照PCB板厂提供信息填写完整。选择仿真的频率范围和频点数,生成如下图的RFPro仿真界。,然后再把GND也添加到下面。按图设置截取需要仿真的部分。添加成功后 网络就有了,15 双击run开始仿真。

m0_72954480的博客 3217

python写的程序怎么打包手机app_Python Kivy(App开发) Windows安装打包步骤

源于: https://blog.youkuaiyun.com/qq_37030400/article/details/107620264?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2~all~first_rank_v2~rank_v25-6-107620264.nonecase&utm_term=kivy%20pycharm%...

weixin_39690391的博客 3177

3D打印必备:如何用Blender将NWD文件转成STL(附精度调整技巧)

本文详细介绍了如何使用Blender将NWD文件转换为STL格式,特别针对3D打印需求提供了精度调整技巧。从环境准备到分步转换流程,再到3D打印专属优化策略,帮助设计师解决破面、尺寸偏差等常见问题,实现高效、精准的格式转换。

week9的博客 272

pyinstaller打包基本命令

本人环境: python3.6,pycharm201902 前提:在pycharm中安装好pyinstaller。 打包 以管理员身份运行cmd,切换至项目所在文件夹 (1) 生成单个exe文件命令 pyinstaller -F -w mainpro.py -n datadownload -i c:\download_2.ico --clean ...

asdwt123的专栏 2570

【技能---ubuntu20.04更换国内镜像源】

安装好ubuntu20.04后,在下载软件等安装包的时候,速度特别的慢,为此就想着更换一下镜像源,以此来增加下载的速度!!!下面是换源的具体流程!!!提示:以下是本篇文章正文内容,下面案例可供参考以上到这里就更换完软件源了,如有不足之处,请大家斧正!!!

fyc300的博客 1万+

计算机视觉教程2-3:图解双线性插值算法&最近邻插值算法

提出此算法的背景是基于图片的缩放,在图片缩放的过程中,实质上就是将原图像像素矩阵像素值,填到目标图像像素矩阵中,目标图像像素矩阵可能比原图像像素矩阵大(图片放大),也可能小(图片缩小)。我们假设图片的宽(WidthWidthWidth)和高(HeightHeightHeight)是按同比例缩放的,那么 srcXsrcWidth=dstXdstWidth\frac{srcX}{srcWidth}= \frac{dstX}{dstWidth}srcWidthsrcX​=dstWidthdstX​ ...

FRIGIDWINTER的博客 7283

1.PyQt5_PyCharm_软件设计和打包成安装包形式的exe程序

点击左下角的windows图标,新安装的软件Anaconda会在里面,打开Anaconda Prompt,输入以下的指令。创建一个名字为hello的环境,环境的核心python版本为3.7,这个过程会下载pip包,以后我们的下载全部都是 pip install xxx。【7】designer.exe、pyuic5.exe、pyinstaller.exe在PyCharm中的使用,在下图位置右键,也就是你的工程名字位置。【5】下载PyQt5相关的包,还是相同的命令窗口,相同的环境。【2】下载Anaconda,

weixin_49777848的博客 1259

WPF在特定领域的应用:打造一款专业的图像编辑工具

WPF在特定领域的应用:打造一款专业的图像编辑工具,在软件开发的广阔领域中,Windows Presentation Foundation(WPF)以其强大的图形渲染能力和丰富的用户界面控件,为开发者提供了构建高性能、美观应用程序的平台。图像编辑工具作为一种对图形处理要求极高的应用类型,WPF 的特性使其成为理想的选择。本文将深入探讨如何使用 WPF 打造一款专业的图像编辑工具,涵盖从基础概念到实际代码实现的各个方面。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 6万+

python程序封装成exe_手把手教你给Python程序写图形界面,并且打包成exe文件

环境配置官网下载Python3,LZ的配置环境是Python3.6,PyCharm 2017.2.1pip3 install PyQt5#下载PyQt5pip install PyQt5-tools -i http://pypi.douban.com/simple --trusted-host=pypi.douban.com#下载工具designer.exe,来开发图形界面在PyCharm中配置外...

weixin_39943547的博客 1204

ZeroClaw安装、使用方法详细全解

ZeroClaw 是一个用 Rust 编写的轻量级、高性能、完全自主的 AI 助手运行时框架

洛星核的博客 618

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

pyinstaller打包过程与问题总结

安装环境: pycharm、Windows 10 打包步骤: 1.安装pyinstaller; 2.安装pywin32; 3.切换到打包的.py文件所在路径; 4.执行指令:pyinstaller -F XXX.py 打包测试的GitHub代码地址:测试pyinstaller打包 Pyinstaller常用参数说明: –i 图标路径; -F 打包成一个exe文件; -w 无控...

HeyShHeyou的博客 1731

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

pyinstaller 打包python3.6+PyQt5中各种错误的解决方案

前言:最近在学习单片机,老师要求自己写串口通信的上位机程序,我采用比较简单的pyqt5+serial模块来完成任务,pycharm测试一切正常,在用pyinstaller打包时出现了很多错误,查询了很多资料后得到了解决,这里汇总一下解决的方法 1. WARNING: lib not found: api-ms-win-crt-string-l1-1-0.dll dependency 299...

秋名山8086 5784

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

python自带编译器闪退_解决pyinstaller打包exe文件出现命令窗口一闪而过的问题

用pyinstaller打包的exe文件打开时,命令窗口一闪而过,并且未出现GUI界面,也看不到错误信息,然后去网上搜相关的信息,最多的两种说法:1.添加raw_input()或者os.system(“pause”)等待信息 ,但是添加后依然是命令窗口一闪而过2.在命令窗口打开exe,网上有两种打开exe的方法start Path\Project.exestart加exe文件的绝对路径,但是效果和...

weixin_39886547的博客 1625

pyqt5 打包为 exe

1. 安装 Anaconda Ubuntu: 下载 : https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.1.0-Linux-x86_64.sh 安装: bash Anaconda3-5.1.0-Linux-x86_64.sh Windows : 下载: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.1.0-Windows-x86_64

cztAI的博客 1027

conda 创建虚拟环境,安装tensorflow,PyQt5 绘制 GUI,Pyinstaller 打包 .py 为 exe

文章目录一、使用conda创建Python虚拟环境1. 常用conda命令2.命令效果展示二、安装tensorflow三、Pycharm配置对应环境四、补充安装项目所需包1. 安装PIL、tqdm2.(1)keras.xxx报错2.(2)tensorflow has no attribute 'Python'报错3.PyQt5安装4.Pycharm External Tools 配置5.tensorflow FutureWarning 解决四、Pyinstaller 打包 .py 为 exe总结 一、使用

qq_39298073的博客 2125

Python 学生管理系统打包为 exe.【学点芝士】

这次我们要练习的是:学生管理系统打包为 exe.

m0_74872863的博客 144
上一篇: VScode 基础使用教程
下一篇: GDKOI-J 2023 游记
.SAI.
博客等级 码龄5年 835粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值