前言

做了个python的小项目,需要打包为桌面端的exe使用,结果一打包,体积直接上百兆了,研究了下,使用虚拟环境打出的包会更干净小巧。

安装anaconda

  1. anaconda用作python的虚拟环境管理工具,安装命令:https://repo.anaconda.com/archive/Anaconda3-2023.03-Windows-x86_64.exe

  2. 配置anaconda环境变量

    win+i 搜索“高级系统设置”,打开



    点击环境变量



    双击系统变量中的Path



    依次添加系统环境变量(需视anaconda安装目录而定):

    D:\anaconda

    D:\anaconda\Library\mingw-w64\bin

    D:\anaconda\Library\usr\bin

    D:\anaconda\Library\bin

    D:\anaconda\Scripts

  3. 依次返回确定保存

创建anaconda虚拟环境

  1. 打开anaconda prompt

  2. 创建anaconda虚拟环境:conda create -n env_1 python==3.7.9(可自行选择版本)

  3. 验证是否创建成功:python -V

  4. 常用anaconda命令:

    导出虚拟环境的列表:conda env list

    导出当前环境的包:conda list

    启动/切换至名为name的Python环境:conda activate name

    退出虚拟环境:conda deactivate

    删除虚拟环境:conda remove -n 环境名 --all

  5. 在虚拟环境中安装python打包工具pyinstaller,以及其他自己在项目中使用到的包:

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller(国内使用清华源较快)

vscode选择python解释器

  1. 打开vscode,按下ctrl+shift+p

  2. 输入:Python: Select Interpreter,点击出现的选项

  3. 点击:输入解释器路径-查找

  4. 确认选中anaconda安装路径下刚生成的虚拟环境的python.exe文件

设置vscode默认终端为cmd

  1. 点击选择默认配置文件

  2. 点击选中Command Prompt

  3. 关闭vscode,重新使用vscode打开项目,按下shift+ctrl+` ,查看是否使用cmd切换为了虚拟环境

生成spec文件

  1. spec文件就是pyinstaller打包时的配置文件(语法为python语法),控制台输入命令:pyi-makespec -F -w main.py(main为生成的spec文件的文件名)

  2. 编辑spec文件

# -*- mode: python ; coding: utf-8 -*-
def getExeName(): # 获取名字与版本
import config
return config.name + '-' + config.version
block_cipher = None
a = Analysis(
['main.py'], # 需要打包的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=getExeName(), # 打包后的名字
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False, # 双击exe是否显示cmd窗口
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon='./img/icon.ico' # 打包的exe图标
)

Analysis第一个参数为列表,列表中元素为需要打包的py文件,可自行添加删除,EXE为打包的exe信息,可在此处修改exe的名字、图标等。图标必须为ico格式图片,这里提供一个图片格式转换网站:https://onlineconvertfree.com/zh/convert/svg/

利用spec配置打包

  1. spec文件编辑完成后输入命令:Pyinstaller main.spec(main.spec为刚才生成的配置文件名)

  2. 出现下图即为打包成功,在项目的根目录下会生成dist目录,里面即为打包出的exe文件:

原文链接:https://xiblogs.top/?id=57

python项目生成exe的更多相关文章

  1. python脚本生成exe程序

    去年十一月换了新公司后,一直没闲着,马不停蹄地接不同的需求,一个版本一个版本的迭代,也没时间研究python了.十一休假归来,某日,老婆问金融量化需要学python吗?并分享了一个公众号文章,内容是吹 ...

  2. pyinstaller将python脚本生成exe

    一.下载pyinstaller 二.生成exe 下载pyinstaller 1.在C:\python27\Scripts目录下打开cmd界面,执行命令:pip install PyInstaller ...

  3. python脚本生成exe可执行文件

    1.先安装第三方插件: py2exe. Get py2exe from http://www.py2exe.org/ 在download里下载与自己python对应的版本 2.写一个测试python文 ...

  4. python 使用py2exe将python 脚本生成exe可执行文件

    使用python的py2exe模块可以很容易地帮助我们将python脚本生成可执行的exe程序.这样我们就可以让脚本脱离虚拟机的束缚,从而独立运行. 首先安装py2exe分解步骤如下:(pip和eas ...

  5. python——pyinstaller生成exe基本使用和遇到的坑

    1.安装 pip install pyinstaller 2.常规操作 在cmd界面(之前安装python或者anaconda的时候正确添加环境变量的话,是可以在cmd界面直接执行pyinstalle ...

  6. Python项目生成requirements.txt文件及pip升级问题解决及流程

    缘由:新项目使用Python, PC上的python包不全,需要通过requirements.txt文件指定安装所需包 pip安装遇到一些坑 一.直接使用pip包管理工具生成requirements. ...

  7. Python项目生成所有依赖包的清单

    最近写完的自动化脚本,分享给同事的时候发现依赖包很难解决(使用的不是virtualenv环境).想起来之前看开源接口平台项目的时候可以一键下载依赖包,于是就找到了第三方包pipreqs,可以自动帮助我 ...

  8. python打包生成exe文件

    今天任务让做一个可以在Win上直接执行的脚本,百度了下原来可以生产.exe文件.神奇了 安装 pyInstaller pip install pyInstaller  进入要打包文件的目录 执行 py ...

  9. 利用sphinx为python项目生成API文档

    sphinx可以根据python的注释生成可以查找的api文档,简单记录了下步骤 1:安装 pip install -U Sphinx 2:在需要生成文档的.py文件目录下执行sphinx-apido ...

  10. Python项目生成requirements.txt的多种方式

    我相信任何软件程序都会有依赖的类库,尤其现在开源如此的火爆,因为一个项目可能会有无很多的依赖的包 这个时候难道我们都要一个一个的去找到安装吗?即使你找到了依赖的包 但是呢模块的版本又有很多难道你都要装 ...

随机推荐

  1. Java-JSTL标签简化和替换jsp页面上的java代码

    概念:JavaServer Pages Tag Library JSP标准标签库 作用:用于简化和替换jsp页面上的java代码 使用标签: 导入jstl相关jar包 引入标签库:taglib指令:& ...

  2. 第一节 线性数据结构 STL

    vector 容器 迭代器 vector<int> v{1, 0, 0, 8, 6}; for(vector<int>::interator it = v.begin(); i ...

  3. 01-初识springboot

    目录 01,什么是springboot 02,如何使用springboot 01,什么是springboot springboot是一个基于spring框架开发出来的一个新的框架,目的是为了简化spr ...

  4. 释放资源的方式try-with-resources

    1.try-catch-finally 2.try-with-resources 使用方法 try(//这里定义你要使用的资源){} catch(){} 注意:try()里只能存放流对象(资源对象), ...

  5. Selenium 8个定位元素

    selenium 8个定位元素为:id.name.xpath.link_text.class_name.tag_name.css_selector.partial_link_text 1.id元素 浏 ...

  6. 【Mybatis-Plus】使用QueryWrapper作为自定义SQL的条件参数

    发现同事的自定义SQL写法是这样的 连表之后使用的条件是 ${ew.customSqlSegment} @Param声明的常量: /** * wrapper 类 */ String WRAPPER = ...

  7. 【MybatisPlus】再补充内容

    2021年7月21日 14点05分 看尚硅谷新讲的尚医通,这个MP的文档多了新东西: 依赖版本: springBoot版本  2.2.1.RELEASE <dependencies> &l ...

  8. 2024-08-03:用go语言,给定一个从 0 开始的字符串数组 `words`, 我们定义一个名为 `isPrefixAndSuffix` 的布尔函数,该函数接受两个字符串参数 `str1` 和

    2024-08-03:用go语言,给定一个从 0 开始的字符串数组 words, 我们定义一个名为 isPrefixAndSuffix 的布尔函数,该函数接受两个字符串参数 str1 和 str2. ...

  9. 如何在无窗口模式下为git的tag和commit操作加GPG私钥——如何在命令行模式下使用gpg秘钥为git操作签名

    相关: 如何在无窗口模式下运行GPG--如何在命令行模式下使用gpg生成秘钥:How to make gpg prompt for passphrase on CLI--GPG prompt for ...

  10. 【转载】 解决VSCode运行或调试python文件无反应的问题

    ---------------- 版权声明:本文为CSDN博主「姜行者」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn. ...