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

前言:

Python 語言的設計變得越來越簡單,它有很多可以使用的庫,所以尤其在人工智能時代,Python語言被廣泛應用。但是Python語言和windows系統的兼容性稍微偏弱,如何生成windows可以執行的exe文件。是要一個很復雜的配置過程,本文就會做一個介紹。

本文,通過一個Python YOLOv8項目的打包實踐,將pycharm里面如何運用pyinstaller的工具進行項目打包和配置的中級用法進行了說明和實際例子的實踐。


1 工具介紹

1.1 PyInstaller 

PyInstaller 是一款用于將 Python 腳本打包為獨立可執行文件(如 .exe.app 等)的工具,支持 Windows、macOS 和 Linux 系統。它的核心作用是解決 Python 程序「依賴環境」的問題 —— 打包后生成的可執行文件無需用戶安裝 Python 解釋器或相關庫,即可直接運行,極大簡化了程序的分發和使用流程。

PyInstaller 是 Python 程序分發的實用工具,通過簡單命令即可將腳本打包為獨立可執行文件。基礎使用只需掌握 --onefile--add-data 等核心參數;復雜項目可通過 .spec 文件精細配置資源、依賴等,解決打包中的路徑、依賴缺失等問題。

一、核心功能與優勢

  1. 跨平臺支持
    可在 Windows(生成 .exe)、macOS(生成 .app)、Linux(生成 ELF 格式可執行文件)上運行,且能為不同系統交叉編譯(需特定環境配置)。

  2. 兩種打包模式

    • 單文件模式(--onefile:所有依賴(代碼、庫、資源文件)被壓縮到一個獨立的可執行文件中,方便傳輸,但運行時會臨時解壓到系統臨時目錄,啟動速度略慢。
    • 文件夾模式(默認,--onedir:生成一個包含可執行文件和所有依賴文件的文件夾,啟動速度快,但分發時需整個文件夾傳遞。
  3. 自動處理依賴
    自動分析 Python 腳本中的 import 語句,追蹤所有依賴的模塊(包括標準庫、第三方庫)和二進制文件(如 .dll.so),并打包到最終文件中。

  4. 支持資源文件打包
    可通過配置將圖片、配置文件(如 .yaml.json)、數據文件等非代碼資源打包到可執行文件中,確保程序運行時能正確讀取

二、基本使用流程

2.1.安裝
通過 pip 安裝:

pip install pyinstaller

2.2.基礎打包命令

  • 打包單個腳本(默認文件夾模式):
pyinstaller main.py
  • 單文件模式打包:
pyinstaller --onefile main.py

2.3 生成文件說明
執行命令后,會生成以下文件 / 文件夾:

  • dist/:存放最終的可執行文件(或文件夾)。
  • build/:打包過程中的臨時文件(可刪除)。
  • main.spec:打包配置文件(可手動修改高級配置)。

三、關鍵參數與配置

PyInstaller 的參數可通過命令行或 .spec 文件配置,常用核心參數如下:

類別 參數 / 配置項 作用說明
打包模式 --onefile 單文件模式,所有內容合并為一個 .exe

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90720.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90720.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90720.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Linux | 網絡】傳輸層(UDP和TCP)

目錄一、再談端口號1.1 端口號1.2 端口號的范圍劃分1.3 常見知名端口號1.4 netstat 命令1.5 進程與端口號的關系1.6 pidof 命令二、UDP協議2.1 UDP協議段格式2.2 如何理解UDP報頭和UDP報文2.2.1 UDP報頭2.2.2 UDP報文和UDP報文的管理2.2.3 UDP封裝過程2.3 UDP的特點2.4 UDP的緩…

mybatisX的自定義模板生成

在idea中使用mybtais的自定義模板生成,可以幫我們省去很多重復的代碼。 打開一個項目,我們要修改的主要就兩個文件,一個是生成的mapper接口,另一個是xml文件: 相應的mapper接口模板為: package ${mapper…

miniz:一個輕量級、高性能的開源壓縮庫

目錄 1.簡介 2.核心特性 3.基本使用示例 4.與 ZLIB 的對比 5.使用場景 6.注意事項 1.簡介 miniz 是一個輕量級、高性能的開源壓縮庫,專注于提供 ZLIB/GZIP 兼容的壓縮和解壓縮功能。它的核心優勢在于體積小巧(單文件實現)、跨平臺支持和…

Jenkins接口自動化測試(構建)平臺搭建

Python接口自動化測試零基礎入門到精通(2025最新版)自動化測試流程 在進行平臺搭建前,我們首先要問自己:我需要搭建的平臺的功能是什么,要實現什么目標? 在我的理解中,自動化構建平臺的執行流…

Day 22: 復習

機器學習數據處理與降維技術復習總結 前言 經過6天的學習,我們系統地學習了從基礎的Numpy數組操作到高級的降維算法,這些內容構成了機器學習數據預處理的重要知識體系。本文將對這一系列學習內容進行全面復習和總結,幫助大家建立完整的知識…

力扣 hot100 Day56

46. 全排列 給定一個不含重復數字的數組 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意順序 返回答案。 //抄的 class Solution { private:vector<vector<int>>result;vector<int> path; public:void backtracking(vector<int>& nu…

Android 編碼規范全指南

在 Android 開發領域&#xff0c;代碼不僅是功能實現的載體&#xff0c;更是團隊協作與項目迭代的基礎。一套完善的編碼規范&#xff0c;能讓代碼從 “可運行” 升級為 “易維護、可擴展、低風險”。本文基于 Google、Square 等頂尖團隊的實踐經驗&#xff0c;結合國內 Android…

[RPA] Excel中的字典處理

案例1一個Excel文件總共有2個Sheet頁&#xff0c;分別為總表和對照表通過對照表sheet頁&#xff0c;設置價格對照字典對照表循環總表sheet頁&#xff0c;根據循環到的商品名稱&#xff0c;找到對應字典中的價格&#xff0c;并計算出總價總表將總價寫入到Excel表中C列&#xff0…

基于NSGAII優化算法的車間生產調度matlab仿真

目錄 1.程序功能描述 2.測試軟件版本以及運行結果展示 3.部分程序 4.算法理論概述 5.參考文獻 6.完整程序 1.程序功能描述 車間生產調度是制造業的核心環節&#xff0c;其目標是在滿足設備約束、工序優先級等條件下&#xff0c;優化多個相互沖突的生產指標&#xff08;如…

Cmake、VS2019、C++、openGLopenCV環境安裝

在 CMake 和 Visual Studio 2019 環境下安裝和配置 OpenGL、OpenCV 以及 CUDA 可能會有些復雜&#xff0c;因為涉及的組件多且相互依賴。以下是一個詳細的指南&#xff0c;幫助您逐步完成安裝和配置。 1. 前提條件 在開始之前&#xff0c;請確保您已安裝以下軟件&#xff1a; …

視頻二維碼在產品設備說明書中的應用

在當今數字化的時代&#xff0c;傳統的產品設備說明書正面臨著一場變革。文字和圖片雖然能提供基本信息&#xff0c;但在復雜設備的安裝、操作和故障排除方面&#xff0c;往往顯得力不從心。而視頻二維碼的出現&#xff0c;為這一困境提供了完美的解決方案&#xff0c;它將冰冷…

【Pytest 使用教程】

pytest 使用 test_basic.py Pytest 完全實戰手冊 一、核心概念與基礎 1、在pytest框架下運行測試用例&#xff0c;最基礎的一共有三點。導入pytest的包寫一個方法&#xff0c;或者類。后面運行的時候&#xff0c;相當于運行這個方法&#xff0c;或者類里的方法&#xff0c;無需…

基于OpenOCD 的 STM32CubeIDE 開發燒錄調試環境搭建 DAPLINK/STLINK

需要部署一個開發環境,實現h7的板子通過daplink功能給目標板燒寫程序(同事要將這個過程用fpga實現),需要通過openocd+gdb+daplink stm32; 總結:單條命令執行太麻煩,參考4寫成腳本文件: 獨立腳本使用Openocd ? 在**“在Stm32CubeIDE環境下使用DAP-Link仿真”**一文中…

嵌入式硬件篇---zigbee無線串口通信問題

使用 ZigBee 進行無線串口通信時&#xff0c;接收異常&#xff08;如丟包、亂碼、完全無法接收&#xff09;是常見問題&#xff0c;其原因涉及射頻通信特性、網絡機制、硬件配置、環境干擾等多個層面。以下從具體機制出發&#xff0c;詳細分析可能的原因&#xff1a;一、射頻層…

【AI周報】2025年7月26日

【AI周報】2025年7月第四周觀察&#xff1a;GitHub Spark重塑開發范式&#xff0c;中美AI政策對壘升級 省流版靜態頁面周報&#xff0c;為方便各位看官快速食用&#xff0c;我準備了摘要版周報&#xff0c;歡迎訪問&#xff1a;20250726周報 引言&#xff1a;本周焦點速覽 2…

HTML:從 “小白” 到 “標簽俠” 的修煉手冊

目錄 一、HTML&#xff1a;網頁的 “骨架” 不是骷髏架 二、文本標簽&#xff1a;文字的 “華麗變身” 術 1. 標題標簽&#xff1a;文字界的 “領導班子” 2. 段落標簽&#xff1a;文字的 “專屬保姆” 3. 文本格式化標簽&#xff1a;給文字 “穿花衣” 三、鏈接標簽&…

python3GUI--基于YOLO的火焰與煙霧檢測系統By:PyQt5(詳細圖文介紹)

文章目錄一&#xff0e;前言1.引言2.正文二&#xff0e;核心內容1.數據集2.模型訓練3.界面窗口1.登錄注冊界面2.核心功能界面3.檢測告警提示窗口三&#xff0e;.核心界面模塊介紹1.頂部信息區域2.數據輸入3.參數配置4.告警設置5.操作臺6.關于7.指標變化8.異常速覽9.日志輸出10.…

基于Transform、ARIMA、LSTM、Prophet的藥品銷量預測分析

文章目錄有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主一、項目背景二、數據準備與預處理三、模型選擇與方法設計1. ARIMA 模型&#xff1a;傳統統計方法的基線構建2. LSTM 模型&#xff1a;引入記憶機制的深度學習方法3. Transformer 模型&#…

LLM隱藏層與logits數值的簡單理解

LLM的“隱藏層數值”和“logits數值” 代表什么,范圍是多少 “隱藏層數值”和“logits數值”是兩個關鍵概念——它們分別對應模型“理解信息”和“輸出決策”的核心環節。 一、先明確基礎:LLM的“思考”流程 LLM本質是“輸入文本→處理信息→輸出結果”的神經網絡。簡單說…

Vue》》@ 用法

使用 別名導入 // 導入 src/components/Button.vue import Button from /components/Button.vue// 導入 src/utils/helper.js import { helperFunc } from /utils/helper// 導入 src/store/index.js import store from /store