Python常用模块:pyinstaller打包生成exe

Posted 风流 少年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python常用模块:pyinstaller打包生成exe相关的知识,希望对你有一定的参考价值。

一:demo

二:代码

2.1 目录

  • assets 资源目录,用于防止静态资源,如图片、图标或者ini配置文件等。
  • config:放一些常用的配置文件。
  • utils:工具类包。
  • venv:虚拟环境
  • build/dist/.spec:打包exe文件时自动生成的。

2.2 代码

config/iniconfig.py

import os
import configparser


def get_config():
    base_path = os.path.dirname(os.path.abspath(__file__))
    config_path = os.path.join(base_path, '..\\\\config\\\\config.ini')
    if not os.path.exists(config_path):
        config_path = '..\\\\config.ini'
    config = configparser.ConfigParser()
    config.read(config_path, encoding='utf-8')
    title = config['window']['title']
    geometry = config['window']['geometry']
    version = config['window']['version']
    return title, geometry, version

md5tools.py

import hashlib
import tkinter as tk
from utils import iniconfig

(title, geometry, version) = iniconfig.get_config()  # 创建窗口
window = tk.Tk()  # 窗口标题
window.title(title + version)
window.resizable(width=False, height=False)  # 窗口大小
window.geometry(geometry)
tk.Label(window, text="请输入内容:", height=2, font=('Arial', 20)).place(x=0, y=4)
input_text = tk.Entry(window, border=2, highlightcolor='red', highlightthickness=1)
input_text.place(x=160, y=20, width=390, height=40)

md5Var = tk.StringVar()


def onclick():
    content = input_text.get()
    md5Var.set(hashlib.md5(content.encode(encoding='UTF-8')).hexdigest())
    print(content)


tk.Button(window, text='确定', width=10, height=2, command=onclick).place(x=560, y=15)
tk.Label(window, textvariable=md5Var, width=30, height=2, font=('Arial', 20), fg='red').place(x=140, y=80)
window.mainloop()

三:生成exe

pip install pyinstaller

参数:

  • -F: 打包后只生成一个exe文件
  • -D: 默认选项,创建一个目录,包含exe文件和大量的依赖文件如.dll等(一般调试的时候使用)
  • -c:默认选项,console带控制台(打包报错的时候会显示具体的错误信息,如果打包失败时可以临时用这个选项看一下错误)
  • -w: 不带控制台(一般使用)
  • -p: 搜索路径,让其找到对应的库
  • -i: icon 设置图标
  • -n: exe文件名

3.1 方式一

如果打包不需要依赖资源文件可以直接打包。

pyinstaller -F -w -n md5tool -i D:\\PycharmProjects\\mytools\\assets\\python.ico  md5tools.py

3.2 方式二

如果打包需要依赖资源文件需要通过.spec文件进行打包。

# 1. 先生成build/dist/.spec文件,然后再删除掉build和dist目录
pyinstaller -F -w -n md5tool -i D:\\PycharmProjects\\mytools\\assets\\python.ico  md5tools.py

# 2. 修改md5tools.spec文件的配置
# md5tools.py表示要打包的文件
# datas表示要打包的资源文件,第一项为资源文件所在的文件夹, 第二个值‘.’代表当前路径
a = Analysis(
	['md5tools.py'],
	datas=[('assets', '.'), ('config', '.')],
)

# exe配置项,主要修改文件名、关闭控制台、配置图标
exe = EXE(
	name='md5tools',
	console=False,
	icon='D:\\\\PycharmProjects\\\\mytools\\\\assets\\\\python.ico'
)

# 3. 通过.spec文件生成exe文件
pyinstaller md5tools.spec

以上是关于Python常用模块:pyinstaller打包生成exe的主要内容,如果未能解决你的问题,请参考以下文章

Python常用模块:pyinstaller打包生成exe

Linux下,Python项目包含多个模块以及图片包,跪问如何用pyinstaller将其打包在一起?

用pyinstaller打包出现找不到指定的模块?

python 中 使用 pyinstaller 打包的exe程序如何调用外部模块?

Python零基础入门篇 · 41:内置模块的使用二:pyinstaller模块(打包py文件以及更换图标)hashlib模块(加密)

利用pyinstaller 打包Python文件