使用PyInstaller打包 Python 工程

引言:大模型是個好工具,盡管好多內容都是拼湊的,但是整理學到的就是自己的。因工作需要隱藏python源代碼,方法有PyInstaller 、Cpython等多種方法,PyInstaller更為常用,PyInstaller打包 Python 工程步驟整理如下:


一、確保系統環境準備就緒

  • 安裝 Python 和 pip
    確認版本(建議 Python 3.6+):

    python3 --version
    pip3 --version
    

    若未安裝,則根據使用系統情況進行安裝。

  • 安裝 PyInstaller
    通過 pip 安裝最新版 PyInstaller:

    pip install pyinstaller==4.10
    

二、打包 Python 工程

1. 最簡打包(生成單個可執行文件)
  • 打包并保留控制臺窗口(適用于命令行程序)

    pyinstaller your_script.py
    
2.常用選項
  • 進入工程根目錄,執行:

    pyinstaller --onefile your_script.py
    
    • --onefile: 生成單個可執行文件,將所有依賴打包成單個 .exe(Windows)或無后綴文件(Linux/macOS)。
    • your_script.py:替換為你的主程序入口文件。
    • 輸出目錄:dist/ 下生成可執行文件。
  • 打包 GUI 程序(隱藏控制臺)

    pyinstaller --onefile --windowed your_script.py
    

    --windowed: 適用于 PyQt/Tkinter 等 GUI 程序,運行時不顯示命令行窗口。

  • 使用 --debug 參數生成詳細日志:

    pyinstaller --debug your_script.py
    

三、打包高級選項

1. 添加數據文件(如配置文件、圖片)
pyinstaller --onefile --add-data "data/config.json:data" your_script.py
  • 格式源路徑;目標路徑(Windows 用 ;,Linux/macOS 用 :)。
  • 示例:將 data/config.json 打包到程序內的 data 目錄。
2. 指定程序圖標
pyinstaller --onefile --icon=app.ico your_script.py
  • 支持 .ico(Windows)、.icns(macOS)、.png(部分系統)。
3. 排除不必要的模塊(減小體積)
pyinstaller --onefile --exclude-module matplotlib your_script.py
  • 避免打包大型但未使用的庫(如 matplotlibnumpy)。
4. 隱藏導入的模塊(解決 ModuleNotFoundError
pyinstaller --onefile --hidden-import=pandas --hidden-import=numpy your_script.py
  • 或通過 .spec 文件配置(見下文)。
5. 啟用 UPX 壓縮(需安裝 UPX)
pyinstaller --onefile --upx-dir=/path/to/upx your_script.py
<

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

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

相關文章

Python 程序設計講義(1):PyCharm 安裝教程

Python 程序設計講義&#xff08;1&#xff09;&#xff1a;PyCharm 安裝教程 一、安裝 Python 解釋器 1、下載 Python 安裝文件 點擊如下鏈接進入 Python 官網&#xff1a; https://www.python.org/ 在彈出的頁面中單擊【Downloads】&#xff0c;然后單擊下面的【Download Pyt…

uniapp云打包安卓

1、基礎云打包 2、修改logo3、怎么實現下拉菜單4、修改啟動頁啟動頁默認這樣 5、URL Scheme頁面跳轉

Python----NLP自然語言處理(英文分詞器--NLTK)

一、NLTK_介紹NLTK&#xff08;Natural Language Toolkit&#xff0c;自然語言處理工具包&#xff09;&#xff0c;一個主要用于清洗和處理英文文本的Python工具包。它有很多的功能&#xff0c;我們主要使用的是它的分詞功能&#xff0c;之前講過中文分詞是比較復雜的&#xff…

傳統瀏覽器過時了?Dia如何用AI重新定義上網體驗

歡迎來到我的博客&#xff0c;代碼的世界里&#xff0c;每一行都是一個故事&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交給時間 &#x1f3e0; &#xff1a;小破站 傳統瀏覽器過時了&#xff1f;Dia如何用AI重新定義上網體驗它是什么核心功能搜索編程左右互動感謝…

基于DTLC-AEC與DTLN的輕量級實時語音增強系統設計與實現

基于DTLC-AEC與DTLN的輕量級實時語音增強系統設計與實現 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站。 1. 引言 在當今的互聯網通信時代,實時語音通信已成為人們日常生活中不可或缺的一部分。然而,語音通信質量常…

Attu-Milvus向量數據庫可視化工具

本文介紹了如何安裝可視化工具Attu&#xff0c;包括使用Docker鏡像啟動并訪問Attu服務。 目錄 前言 一、Attu安裝 1. Docker容器安裝 2. 桌面程序安裝 二、使用 Milvus Web U 前言 Attu是一款專為Milvus向量數據庫打造的開源數據庫管理工具&#xff0c;提供了便捷的圖形化…

高效檢測數據突變的MDAM算法詳解

在數據分析領域&#xff0c;我們經常需要檢測數據序列中的異常變化。今天給大家介紹一種簡單但非常有效的算法——MDAM (Mean Drift Accumulation Monitor)&#xff0c;它能幫你輕松發現數據中的均值突變現象&#xff01;1. &#x1f50d; 算法原理累計數均值突變檢測算法(MDAM…

記錄一道sql面試題3

題目&#xff1a;有一張表a,和一張表ba:id age name1 18 kethy2 32 kavin3 22 tonyb:id dept description2 sale today2 dev sunday提問&#xff1a;將a和b兩張表左連接查詢&#xff0c;條件是a.id b.id會得到什么結果。查詢的字段為a.*,b.* 。說明&#xff1a;左表 a 中 id1 …

linux系統------LVS+KeepAlived+Nginx高可用方案

目錄 一、環境搭建 1.環境準備 2.安裝ipvsadm 和 安裝 keepalived&#xff08;Lvs服務器&#xff09; 3.為兩臺RS配置虛擬ip&#xff08;nginx服務器&#xff09; 1.配置虛擬網絡子接口&#xff08;回環接口&#xff09; 2.修改內容如下: 3.配置ARP 二、KeepalivedLvsN…

【MySQL】性能優化實戰指南:釋放數據庫潛能的藝術

文章目錄MySQL性能優化實戰指南&#xff1a;釋放數據庫潛能的藝術&#x1f680; 引言為什么需要MySQL性能優化&#xff1f;&#x1f4cb; 性能優化基礎知識MySQL性能瓶頸分析1. 硬件資源瓶頸2. MySQL內部瓶頸&#x1f3c6; 優化配置策略大全&#x1f4be; 內存配置優化InnoDB緩…

Unity 3D碰撞器

在Unity中&#xff0c;碰撞器&#xff08;Collider&#xff09;是用于檢測物體之間碰撞的組件&#xff0c;它們定義了物體的物理邊界。碰撞器與剛體&#xff08;Rigidbody&#xff09;配合使用&#xff0c;實現物理模擬。下面我將按您的要求&#xff0c;從碰撞器的種類、常用參…

Windows批處理實現帶時間戳ping

windows環境 &#xff0c; 將以下代碼保存為 .bat文件 echo off echo.---------------------------------------------------------- echo.----------------------------------------------------------- echo off set /p hostplease input your destination ip : set logfi…

GeoPandas 城市規劃:Python 空間數據初學者指南

安裝和設置 在深入研究數據之前&#xff0c;我們需要準備好工具。設置 GeoPandas 及其必要的依賴項是第一步。 我們將在 Google Colab 中完成此操作。 !pip install geopandas contextily matplotlib 空間數據有多種格式&#xff0c;但 GeoJSON 是常見且易于訪問的格式。Ge…

力扣面試150題--環形子數組的最大和

Day 80 題目描述思路 初次做法&#xff1a;在昨天代碼的基礎上修改 計算普通子數組的最大和 使用動態規劃計算以每個位置為起點的最大子數組和&#xff08;存儲在 val 中&#xff09;&#xff0c;并更新全局最大值 rightmax。計算后綴和與前綴和 sum[i]&#xff1a;從位置 i 到…

python類Keys

類Keys的定義:Elass Keys (object): 程軒開Set of special keys codes.#n# 第 15 章 網絡爬蟲 合情些準出照地限公軹 esms0 pro 瘀 Δ器代芻奄燉慧 圖 15-39 工件肉業魚光得 國有上子 理人場營&#xff0c;有司;可有B 相關圍書 圖 15-40 頁源代碼 ython". 名可能不鞋 NUL…

svn如何設置忽略文件夾或者文件的提交

使用svn&#xff0c;每次提交代碼時&#xff0c;都會把java的編譯文件target&#xff0c;或者前端的node_modules&#xff0c;dist等不需要提交的目錄或這文件&#xff0c;列出來實現。通過配置svn&#xff0c;可以在提交代碼時&#xff0c;自動忽略這些不需要提交到倉庫的文件…

MonoGame 游戲開發框架日記 -06

第六章&#xff1a;動畫類以及動畫精靈 好久不見家人們好久沒更新MonoGame系列了&#xff0c;不是主包棄坑了&#xff0c;主要是主包最近忙著搞項目學科一找暑假工打&#xff0c;這不一閑下來就立刻馬不停蹄的來給大家更新了&#xff0c;今天的教程代碼部分比較多接下來我們正式…

LVS四種工作模式深度解析

LVS&#xff08;linux virual server&#xff09;LVS四種工作模式深度解析 LVS-NAT模式 四臺虛擬機 火墻關閉 關閉火墻 systemctl stop firewalldsystemctl disable firewalld關閉開機自啟火墻1.clienteth0 IP&#xff1a;172.25.254.1002.lvs eth0ip :172.25.254.200; eth1ip:…

[設計模式]C++單例模式的幾種寫法以及通用模板

之前在這篇文章中簡單的介紹了一下單例模式的作用和應用C中單例模式詳解_c單例模式的作用-CSDN博客&#xff0c;今天我將在在本文梳理單例模式從C98到C11及以后的演變過程&#xff0c;探討其不同實現方式的優劣&#xff0c;并介紹在現代C中的最佳實踐。 什么是單例模式&#x…

小架構step系列19:請求和響應

1 概述作為Web程序&#xff0c;通用形式是發起HTTP請求并獲取返回的結果&#xff0c;在這個過程中&#xff0c;需要把請求映射到代碼的接口上&#xff0c;提供這種接口的類一般稱為Controller&#xff0c;也就是需要把請求映射到Controller的接口方法上&#xff0c;把請求的參數…