当前位置: 代码网 > it编程>前端脚本>Python > Python使用PyInstaller/pip打包与发布的详细指南

Python使用PyInstaller/pip打包与发布的详细指南

2025年11月23日 Python 我要评论
本篇博客从零到一带你熟悉:pyinstaller:把 python 项目打包成 exe / apppip 包发布流程:把你的项目推向 pypi常见坑与最佳实践让你写的 python 程序能真正&ldq

本篇博客从零到一带你熟悉:

  • pyinstaller:把 python 项目打包成 exe / app
  • pip 包发布流程:把你的项目推向 pypi
  • 常见坑与最佳实践

让你写的 python 程序能真正“走出去”,触达更多真实用户。

一、使用 pyinstaller 打包可执行程序

1. pyinstaller 是什么

pyinstaller 是将 python 程序打包成可执行文件(如 windows 的 .exe)的最常用工具。它会把 python 解释器 + 所有依赖打包进一个独立文件,用户无需 python 环境即可运行。

适合场景:

  • 给用户分发桌面工具
  • 内部办公自动化脚本
  • gui 程序(tkinter、pyqt、wxpython 等)
  • 命令行工具

2. pyinstaller 基本使用

安装:

pip install pyinstaller

最简单的打包:

pyinstaller main.py

完成后,目录结构如下:

dist/
    main/
        main.exe
build/
main.spec

最终可执行文件就在 dist 目录里。

3. 常用参数(必须掌握)

单文件打包

pyinstaller -f main.py

优点:只生成一个 .exe 缺点:启动稍慢

隐藏控制台窗口(gui 程序)

pyinstaller -f -w main.py

加入图标

pyinstaller -f -i icon.ico main.py

添加数据文件(图片、配置、模型)

推荐在 .spec 文件中配置:

a = analysis(
    ...,
    datas=[('config.yml', 'config.yml'), ('assets/', 'assets/')],
)

然后:

pyinstaller main.spec

4. 打包常见问题(超实用)

(1)打包后无法运行 / 缺少模块

原因:pyinstaller 未能自动识别依赖 解决:

pyinstaller -f main.py --hidden-import xx_module

(2)打包文件太大?

解决方式:

  • 使用 upx 压缩
  • 删除 matplotlib/numpy 中用不到的 dll

(3)mac 打包的 app 无法在另一台 mac 运行

因为 macos 的签名安全机制,建议:

  • 在目标版本系统构建(如 macos 14)
  • 结合 codesign --deep 进行签名

二、python 包发布到 pypi(pip install 可用)

让别人可以:

pip install yourpackage

这是专业 python 开发者的重要能力之一。

1. 项目结构(最推荐)

myproject/
    myproject/
        __init__.py
        core.py
    tests/
    readme.md
    pyproject.toml
    license

最关键:使用 pyproject.toml(现代标准)

2. 使用 build 进行构建

安装:

pip install build twine

构建:

python -m build

生成:

dist/
    myproject-1.0.0.tar.gz
    myproject-1.0.0-py3-none-any.whl

3. 发布到 testpypi

避免污染正式 pypi。

twine upload --repository testpypi dist/*

安装测试版:

pip install -i https://test.pypi.org/simple/ myproject

4. 正式发布到 pypi

twine upload dist/*

全世界的人就都可以:

pip install myproject

5. pyproject.toml 示例(最推荐)

下面是一个专业示例,可直接复用:

[build-system]
requires = ["setuptools>=61", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "myproject"
version = "1.0.0"
authors = [
    { name="your name", email="you@example.com" }
]
description = "a powerful and modern python utility."
readme = "readme.md"
license = { file="license" }
requires-python = ">=3.8"
dependencies = ["requests", "numpy"]

[project.urls]
homepage = "https://github.com/you/myproject"
documentation = "https://myproject-docs.com"

6. pypi 发布常见问题

403 权限错误

未创建 api token 或 token 配置错误 → 进入 pypi.org/manage/account/ 创建 token 并更新 .pypirc

版本号冲突

pypi 版本号不能重复 → 每次发布前更新版本号(如:1.0.1 → 1.0.2)

依赖未安装

确保 dependencies 正确写到 pyproject.toml

三、两者对比:应该用哪个

场景pyinstallerpypi 包发布
给普通用户(没 python 环境)✔ 最佳选择
给开发者✔✔(最推荐)
分发 gui 工具无意义
库 / sdk 发布✔最佳

四、最佳实践总结

办公/桌面工具 → pyinstaller:稳定、方便、用户无须 python

开发者工具 → pypi 发布:现代 python 项目的标准做法

推荐结合 ci 自动化发布:github actions + pypi + build 可以做到“打 tag 自动发布”

到此这篇关于python使用pyinstaller/pip打包与发布的详细指南的文章就介绍到这了,更多相关python项目打包与发布内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com