最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用PyInstaller/pip打包與發(fā)布的詳細(xì)指南

 更新時(shí)間:2025年11月23日 10:25:07   作者:程序員愛釣魚  
這篇文章主要為大家詳細(xì)介紹了Python使用PyInstaller/pip打包與發(fā)布的詳細(xì)指南

本篇博客從零到一帶你熟悉:

  • PyInstaller:把 Python 項(xiàng)目打包成 EXE / APP
  • pip 包發(fā)布流程:把你的項(xiàng)目推向 PyPI
  • 常見坑與最佳實(shí)踐

讓你寫的 Python 程序能真正“走出去”,觸達(dá)更多真實(shí)用戶。

一、使用 PyInstaller 打包可執(zhí)行程序

1. PyInstaller 是什么

PyInstaller 是將 Python 程序打包成可執(zhí)行文件(如 Windows 的 .exe)的最常用工具。它會(huì)把 Python 解釋器 + 所有依賴打包進(jìn)一個(gè)獨(dú)立文件,用戶無需 Python 環(huán)境即可運(yùn)行。

適合場景:

  • 給用戶分發(fā)桌面工具
  • 內(nèi)部辦公自動(dòng)化腳本
  • GUI 程序(Tkinter、PyQt、wxPython 等)
  • 命令行工具

2. PyInstaller 基本使用

安裝:

pip install pyinstaller

最簡單的打包:

pyinstaller main.py

完成后,目錄結(jié)構(gòu)如下:

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

最終可執(zhí)行文件就在 dist 目錄里。

3. 常用參數(shù)(必須掌握)

單文件打包

pyinstaller -F main.py

優(yōu)點(diǎn):只生成一個(gè) .exe 缺點(diǎn):啟動(dòng)稍慢

隱藏控制臺(tái)窗口(GUI 程序)

pyinstaller -F -w main.py

加入圖標(biāo)

pyinstaller -F -i icon.ico main.py

添加數(shù)據(jù)文件(圖片、配置、模型)

推薦在 .spec 文件中配置:

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

然后:

pyinstaller main.spec

4. 打包常見問題(超實(shí)用)

(1)打包后無法運(yùn)行 / 缺少模塊

原因:PyInstaller 未能自動(dòng)識(shí)別依賴 解決:

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

(2)打包文件太大?

解決方式:

  • 使用 UPX 壓縮
  • 刪除 matplotlib/numpy 中用不到的 DLL

(3)Mac 打包的 app 無法在另一臺(tái) Mac 運(yùn)行

因?yàn)?macOS 的簽名安全機(jī)制,建議:

  • 在目標(biāo)版本系統(tǒng)構(gòu)建(如 macOS 14)
  • 結(jié)合 codesign --deep 進(jìn)行簽名

二、Python 包發(fā)布到 PyPI(pip install 可用)

讓別人可以:

pip install yourpackage

這是專業(yè) Python 開發(fā)者的重要能力之一。

1. 項(xiàng)目結(jié)構(gòu)(最推薦)

myproject/
    myproject/
        __init__.py
        core.py
    tests/
    README.md
    pyproject.toml
    LICENSE

最關(guān)鍵:使用 pyproject.toml(現(xiàn)代標(biāo)準(zhǔn))

2. 使用 build 進(jìn)行構(gòu)建

安裝:

pip install build twine

構(gòu)建:

python -m build

生成:

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

3. 發(fā)布到 TestPyPI

避免污染正式 PyPI。

twine upload --repository testpypi dist/*

安裝測試版:

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

4. 正式發(fā)布到 PyPI

twine upload dist/*

全世界的人就都可以:

pip install myproject

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

下面是一個(gè)專業(yè)示例,可直接復(fù)用:

[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 發(fā)布常見問題

403 權(quán)限錯(cuò)誤

未創(chuàng)建 API Token 或 Token 配置錯(cuò)誤 → 進(jìn)入 pypi.org/manage/account/ 創(chuàng)建 Token 并更新 .pypirc

版本號(hào)沖突

PyPI 版本號(hào)不能重復(fù) → 每次發(fā)布前更新版本號(hào)(如:1.0.1 → 1.0.2)

依賴未安裝

確保 dependencies 正確寫到 pyproject.toml

三、兩者對比:應(yīng)該用哪個(gè)

場景PyInstallerPyPI 包發(fā)布
給普通用戶(沒 Python 環(huán)境)? 最佳選擇?
給開發(fā)者???(最推薦)
分發(fā) GUI 工具?無意義
庫 / SDK 發(fā)布??最佳

四、最佳實(shí)踐總結(jié)

辦公/桌面工具 → PyInstaller:穩(wěn)定、方便、用戶無須 Python

開發(fā)者工具 → PyPI 發(fā)布:現(xiàn)代 Python 項(xiàng)目的標(biāo)準(zhǔn)做法

推薦結(jié)合 CI 自動(dòng)化發(fā)布:GitHub Actions + PyPI + build 可以做到“打 tag 自動(dòng)發(fā)布”

到此這篇關(guān)于Python使用PyInstaller/pip打包與發(fā)布的詳細(xì)指南的文章就介紹到這了,更多相關(guān)Python項(xiàng)目打包與發(fā)布內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 【python】matplotlib動(dòng)態(tài)顯示詳解

    【python】matplotlib動(dòng)態(tài)顯示詳解

    這篇文章主要介紹了matplotlib動(dòng)態(tài)顯示,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python基礎(chǔ)教程之增加和去除數(shù)字的千位分隔符

    Python基礎(chǔ)教程之增加和去除數(shù)字的千位分隔符

    千位分隔符其實(shí)就是數(shù)字中的逗號(hào),下面這篇文章主要給大家介紹了關(guān)于Python基礎(chǔ)教程之增加和去除數(shù)字的千位分隔符,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • Python內(nèi)置函數(shù)all()的實(shí)現(xiàn)

    Python內(nèi)置函數(shù)all()的實(shí)現(xiàn)

    Python內(nèi)置函數(shù)?all()?用于判斷可迭代對象中的所有元素是否都為真值(Truthy),是邏輯判斷的重要工具,下面就來具體介紹如何使用,感興趣的可以了解一下
    2025-04-04
  • Pycharm中配置Anaconda解釋器的完整步驟

    Pycharm中配置Anaconda解釋器的完整步驟

    Anaconda是Python的一個(gè)發(fā)行版本,集成了大量插件,在用PyCharm進(jìn)行開發(fā)時(shí),可以選用Anaconda執(zhí)行環(huán)境,下面這篇文章主要給大家介紹了關(guān)于Pycharm中配置Anaconda解釋器的完整步驟,需要的朋友可以參考下
    2022-11-11
  • Python?常用模塊threading和Thread模塊之線程池

    Python?常用模塊threading和Thread模塊之線程池

    這篇文章主要介紹了Python?threading和Thread模塊之線程池,線程池如消費(fèi)者,負(fù)責(zé)接收任務(wù),并將任務(wù)分配到一個(gè)空閑的線程中去執(zhí)行。并不關(guān)心是哪一個(gè)線程執(zhí)行的這個(gè)任務(wù),具體介紹需要的小伙伴可以參考下面文章詳細(xì)內(nèi)容
    2022-06-06
  • Python asyncio核心原理與高階應(yīng)用全解析

    Python asyncio核心原理與高階應(yīng)用全解析

    這篇文章主要介紹了Python asyncio核心原理與高階應(yīng)用,asyncio是Python中強(qiáng)大的異步I/O框架,它允許我們編寫高效的并發(fā)代碼,通過掌握asyncio的高級(jí)應(yīng)用,我們可以編寫更加高效、響應(yīng)迅速的應(yīng)用程序,需要的朋友可以參考下
    2026-05-05
  • Python中處理字符串之isalpha()方法的使用

    Python中處理字符串之isalpha()方法的使用

    這篇文章主要介紹了Python中處理字符串之isalpha()方法的使用,是Python入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • Python實(shí)現(xiàn)優(yōu)先級(jí)隊(duì)列結(jié)構(gòu)的方法詳解

    Python實(shí)現(xiàn)優(yōu)先級(jí)隊(duì)列結(jié)構(gòu)的方法詳解

    優(yōu)先級(jí)隊(duì)列(priority queue)是0個(gè)或多個(gè)元素的集合,每個(gè)元素都有一個(gè)優(yōu)先權(quán),接下來就來看一下簡潔的Python實(shí)現(xiàn)優(yōu)先級(jí)隊(duì)列結(jié)構(gòu)的方法詳解:
    2016-06-06
  • pycharm解決關(guān)閉flask后依舊可以訪問服務(wù)的問題

    pycharm解決關(guān)閉flask后依舊可以訪問服務(wù)的問題

    這篇文章主要介紹了pycharm解決關(guān)閉flask后依舊可以訪問服務(wù)的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Dialog 按照順序彈窗的優(yōu)雅寫法

    Dialog 按照順序彈窗的優(yōu)雅寫法

    這篇文章主要介紹了Dialog 按照順序彈窗的寫法及示例,給大家介紹了DrawType的使用方式,需要的朋友可以參考下
    2021-09-09

最新評(píng)論

沈阳市| 武汉市| 兖州市| 赤壁市| 光山县| 临夏市| 平山县| 南京市| 辛集市| 牙克石市| 蕉岭县| 洛扎县| 龙胜| 昔阳县| 如东县| 抚松县| 万年县| 滦平县| 泽普县| 毕节市| 顺昌县| 涿州市| 麦盖提县| 峨边| 平武县| 正镶白旗| 石台县| 蒲江县| 容城县| 营口市| 中牟县| 方城县| 重庆市| 江阴市| 望奎县| 五莲县| 新沂市| 平武县| 梁平县| 永安市| 嵊泗县|