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

Python導(dǎo)包、分包與打包的完整教程

 更新時(shí)間:2026年02月15日 08:56:29   作者:UrbanJazzerati  
該書主要介紹了Python導(dǎo)包的基礎(chǔ)知識(shí),項(xiàng)目分包實(shí)踐和打包成可執(zhí)行文件的方法,內(nèi)容詳細(xì),適合初學(xué)者,涵蓋了從基礎(chǔ)概念到實(shí)踐操作的全過(guò)程,需要的朋友可以參考下

第一部分:Python導(dǎo)包基礎(chǔ)(完全新手友好)

第一章:理解Python中的“包”和“模塊”

1.1 什么是模塊?

# 一個(gè).py文件就是一個(gè)模塊
# example.py 就是一個(gè)名為example的模塊
def say_hello():
    print("你好!")


def add(a, b):
    return a + b

1.2 什么是包?

# 包是一個(gè)包含__init__.py文件的文件夾
my_package/
    __init__.py    # 這個(gè)文件讓Python知道這是包
    module1.py
    module2.py

第二章:最簡(jiǎn)單的導(dǎo)包方式

2.1 同一個(gè)文件夾內(nèi)的導(dǎo)入

項(xiàng)目結(jié)構(gòu):
project/
    main.py
    utils.py
# utils.py
def greet(name):
    return f"你好,{name}!"


def calculate_sum(numbers):
    return sum(numbers)
# main.py - 方法1:導(dǎo)入整個(gè)模塊
import utils

result = utils.greet("小明")
print(result)  # 輸出:你好,小明!

total = utils.calculate_sum([1, 2, 3, 4, 5])
print(total)   # 輸出:15
# main.py - 方法2:導(dǎo)入特定功能
from utils import greet, calculate_sum

result = greet("小紅")  # 直接使用,不用加 utils.
print(result)
# main.py - 方法3:導(dǎo)入并重命名
from utils import greet as say_hello

say_hello("小張")  # 使用新名字

2.2 導(dǎo)入外部庫(kù)

# Python內(nèi)置庫(kù)
import math
import random
import datetime

# 第三方庫(kù)(需要先安裝)
# pip install requests
import requests

第三章:理解絕對(duì)導(dǎo)入和相對(duì)導(dǎo)入

3.1 創(chuàng)建多級(jí)目錄結(jié)構(gòu)

my_project/
│   main.py
│
├───database/
│   │   __init__.py
│   │   connector.py
│   │   models.py
│
└───utils/
    │   __init__.py
    │   math_tools.py
    │   string_tools.py

3.2 絕對(duì)導(dǎo)入(推薦新手使用)

# main.py
from database.connector import connect_db
from utils.math_tools import add_numbers
from utils.string_tools import format_text

3.3 相對(duì)導(dǎo)入(在包內(nèi)部使用) 若直接運(yùn)行的是models.py

# 在 database/models.py 中
from .connector import connect_db    # . 表示同一目錄
from ..utils.math_tools import add_numbers  # .. 表示上級(jí)目錄

若直接運(yùn)行的是main.py

# 在 database/models.py 中
from database.connector import connect_db    # 與main同一目錄
from utils.math_tools import add_numbers  # 與main同一目錄

第四章:init.py 文件的妙用

4.1 最簡(jiǎn)單的 init.py

# database/__init__.py
# 空文件也可以,但有它才算是包

4.2 有組織的 init.py

# utils/__init__.py
# 集中導(dǎo)入,方便外部使用
from .math_tools import *
from .string_tools import *


# 或者更精確的控制
__all__ = ['add_numbers', 'multiply_numbers', 'format_text']
# 這樣在外面就可以
from utils import add_numbers  # 不需要知道m(xù)ath_tools的存在

4.3 包級(jí)別的變量和初始化

# utils/__init__.py
# 包版本信息
__version__ = "1.0.0"
__author__ = "你的名字"


# 包初始化代碼
print("正在加載工具包...")


# 包級(jí)別的配置
DEFAULT_CONFIG = {
    "log_level": "INFO",
    "timeout": 30
}

第二部分:項(xiàng)目分包實(shí)踐(結(jié)構(gòu)化思維)

第五章:從小項(xiàng)目到中大型項(xiàng)目的演變

5.1 初級(jí)階段:扁平結(jié)構(gòu)

simple_app/
    app.py          # 主程序
    config.py       # 配置
    helpers.py      # 輔助函數(shù)
    data.json       # 數(shù)據(jù)文件

5.2 中級(jí)階段:按功能分包

medium_app/
│   main.py                    # 程序入口
│   requirements.txt           # 依賴列表
│   README.md                 # 說(shuō)明文檔
│
├───core/                     # 核心業(yè)務(wù)邏輯
│   │   __init__.py
│   │   calculator.py        # 計(jì)算器類
│   │   validator.py         # 驗(yàn)證器
│
├───ui/                       # 用戶界面
│   │   __init__.py
│   │   window.py           # 主窗口
│   │   widgets.py          # 小部件
│
├───data/                     # 數(shù)據(jù)處理
│   │   __init__.py
│   │   loader.py           # 數(shù)據(jù)加載
│   │   saver.py            # 數(shù)據(jù)保存
│
└───utils/                   # 通用工具
    │   __init__.py
    │   logger.py           # 日志工具
    │   formatter.py        # 格式化工具

5.3 專業(yè)階段:標(biāo)準(zhǔn)Python項(xiàng)目結(jié)構(gòu)

professional_app/
│
├───src/                     # 源代碼目錄(推薦結(jié)構(gòu))
│   └───my_app/              # 你的包名
│       │   __init__.py
│       │   __main__.py     # 命令行入口:python -m my_app
│       │   cli.py          # CLI接口
│       │   config.py       # 配置管理
│       │
│       ├───core/
│       │   │   __init__.py
│       │   │   business_logic.py
│       │   │   models.py
│       │
│       ├───api/
│       │   │   __init__.py
│       │   │   routes.py
│       │   │   handlers.py
│       │
│       └───utils/
│           │   __init__.py
│           │   helpers.py
│           │   decorators.py
│
├───tests/                   # 測(cè)試目錄
│   │   __init__.py
│   │   test_core.py
│   │   test_utils.py
│   │   conftest.py         # pytest配置
│
├───docs/                    # 文檔
│       index.md
│       tutorial.md
│
├───examples/               # 示例代碼
│       basic_usage.py
│       advanced_features.py
│
├───scripts/                # 腳本
│       setup_env.py
│       generate_data.py
│
│   .gitignore              # Git忽略文件
│   pyproject.toml          # 項(xiàng)目配置(現(xiàn)代方式)
│   setup.py               # 安裝配置(傳統(tǒng)方式)
│   README.md              # 項(xiàng)目說(shuō)明
│   LICENSE               # 許可證
└───requirements.txt       # 依賴包列表

第三部分:打包成可執(zhí)行文件(無(wú)需Python環(huán)境運(yùn)行)

第七章:為什么需要打包成exe?

7.1 打包的好處

  • 用戶無(wú)需安裝Python
  • 可以直接雙擊運(yùn)行
  • 保護(hù)源代碼(可選)
  • 方便分發(fā)

第八章:使用PyInstaller(最簡(jiǎn)單、最流行)

8.1 安裝PyInstaller

# 在命令行中執(zhí)行
pip install pyinstaller


# 驗(yàn)證安裝
pyinstaller --version

8.2 基本打包命令

# 最簡(jiǎn)單的打包
pyinstaller your_program.py


# 打包后,在 dist/ 文件夾中找到可執(zhí)行文件

8.3 常用參數(shù)詳解

# 1. --onefile:打包成單個(gè)文件
pyinstaller --onefile main.py


# 2. --windowed:無(wú)控制臺(tái)窗口(適合GUI程序)
pyinstaller --windowed gui_app.py


# 3. --icon:設(shè)置圖標(biāo)
pyinstaller --onefile --windowed --icon=my_icon.ico main.py


# 4. --name:指定輸出文件名
pyinstaller --name "我的應(yīng)用" main.py


# 5. --add-data:添加額外文件(如配置文件、圖片)
# Windows格式:源文件路徑;目標(biāo)路徑
# Linux/Mac格式:源文件路徑:目標(biāo)路徑
pyinstaller --add-data "config.ini;." main.py
pyinstaller --add-data "images/*.png:images" main.py


# 6. --hidden-import:添加隱藏的依賴
pyinstaller --hidden-import=tkinter main.py

8.4 實(shí)戰(zhàn):打包一個(gè)圖形界面程序

# 假設(shè)你有一個(gè) tkinter 程序
pip install pyinstaller


# 進(jìn)入項(xiàng)目目錄
cd your_project_folder


# 打包命令
pyinstaller --onefile --windowed --icon=app.ico --name "我的應(yīng)用" ^
            --add-data "images;images" ^
            --add-data "config.ini;." ^
            main.py

第九章:使用spec文件進(jìn)行高級(jí)控制

9.1 生成spec文件

# 生成初始spec文件
pyi-makespec main.py


# 或者從已經(jīng)打包的項(xiàng)目中復(fù)制

9.2 spec文件詳解

# main.spec
# -*- mode: python ; coding: utf-8 -*-


a = Analysis(
    ['main.py'],  # 主程序文件
    pathex=[],    # 搜索路徑
    binaries=[],  # 二進(jìn)制文件
    datas=[       # 數(shù)據(jù)文件
        ('config.ini', '.'),
        ('images/*.png', 'images'),
        ('sounds/*.wav', 'sounds')
    ],
    hiddenimports=[  # 隱藏的依賴
        'tkinter',
        'PIL._tkinter_finder'
    ],
    hookspath=[],    # 鉤子路徑
    hooksconfig={},  # 鉤子配置
    runtime_hooks=[],  # 運(yùn)行時(shí)鉤子
    excludes=[],     # 排除模塊(減少體積)
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=None,     # 加密字節(jié)碼
    noarchive=False  # 不打包成archive
)


# 打包成單個(gè)文件
pyz = PYZ(a.pure, a.zipped_data, cipher=None)


exe = EXE(
    pyz,
    a.scripts,
    [],
    exclude_binaries=True,
    name='我的應(yīng)用',  # 輸出文件名
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,        # 使用UPX壓縮
    console=False,   # 顯示控制臺(tái)?True/False
    icon='app.ico',  # 圖標(biāo)
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None
)


coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,
    upx_exclude=[],
    name='我的應(yīng)用'  # 文件夾名稱
)

9.3 使用spec文件打包

# 使用spec文件打包
pyinstaller main.spec

第十章:使用cx_Freeze(跨平臺(tái)替代方案)

10.1 安裝和基本使用

pip install cx-Freeze

最佳實(shí)踐指南

  1. 使用src布局:將源代碼放在src目錄下
  2. 清晰的分層:按功能而不是按類型組織
  3. 最小化import:只導(dǎo)入需要的模塊
  4. 使用__init__.py控制導(dǎo)出:明確公開的API
  5. 虛擬環(huán)境:在干凈的虛擬環(huán)境中打包
  6. 測(cè)試打包結(jié)果:在另一臺(tái)干凈電腦上測(cè)試
  7. 版本控制:每次打包使用不同的版本號(hào)
  8. 簽名和加密:商業(yè)應(yīng)用考慮代碼簽名

以上就是Python導(dǎo)包、分包與打包的完整教程的詳細(xì)內(nèi)容,更多關(guān)于Python導(dǎo)包、分包與打包的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python2中文處理紀(jì)要的實(shí)現(xiàn)方法

    Python2中文處理紀(jì)要的實(shí)現(xiàn)方法

    本篇文章主要介紹了Python2中文處理紀(jì)要的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • Python 對(duì)Excel求和、合并居中的操作

    Python 對(duì)Excel求和、合并居中的操作

    這篇文章主要介紹了Python 對(duì)Excel求和、合并居中的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • Python使用Selenium爬取淘寶異步加載的數(shù)據(jù)方法

    Python使用Selenium爬取淘寶異步加載的數(shù)據(jù)方法

    今天小編就為大家分享一篇Python使用Selenium爬取淘寶異步加載的數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • Python爬取京東商品信息評(píng)論存并進(jìn)MySQL

    Python爬取京東商品信息評(píng)論存并進(jìn)MySQL

    這篇文章主要介紹了Python爬取京東商品信息評(píng)論存并進(jìn)MySQL,文章通過(guò)構(gòu)建mysql數(shù)據(jù)表展開Python爬取信息存進(jìn)MySQL的內(nèi)容,需要的小伙伴可以參考一下
    2022-04-04
  • 一文帶你深入理解Python的`functools.lru_cache`裝飾器

    一文帶你深入理解Python的`functools.lru_cache`裝飾器

    Python中的functools.lru_cache裝飾器是一個(gè)非常有用的裝飾器,它可以幫助我們優(yōu)化遞歸函數(shù),避免重復(fù)計(jì)算已經(jīng)計(jì)算過(guò)的值,在這篇文章中,我們將探討?functools.lru_cache?的工作原理以及如何使用它,感興趣的朋友跟著小編一起來(lái)學(xué)習(xí)吧
    2023-07-07
  • 2023最新pytorch快速安裝指南(超詳細(xì)版)

    2023最新pytorch快速安裝指南(超詳細(xì)版)

    這篇文章主要給大家介紹了2023年最新pytorch快速安裝指南的相關(guān)資料,PyTorch是一個(gè)開源的深度學(xué)習(xí)框架,提供了各種張量操作并通過(guò)自動(dòng)求導(dǎo)可以自動(dòng)進(jìn)行梯度計(jì)算,方便構(gòu)建各種動(dòng)態(tài)神經(jīng)網(wǎng)絡(luò),需要的朋友可以參考下
    2023-10-10
  • 一文教會(huì)你用Python讀取PDF文件

    一文教會(huì)你用Python讀取PDF文件

    Python?工程師在日常的工作中,經(jīng)常會(huì)碰到解析和處理PDF文件的情況。本文將pdfplumber進(jìn)行PDF文件的讀取操作,感興趣的可以了解一下
    2022-08-08
  • Python統(tǒng)計(jì)文件中去重后uuid個(gè)數(shù)的方法

    Python統(tǒng)計(jì)文件中去重后uuid個(gè)數(shù)的方法

    這篇文章主要介紹了Python統(tǒng)計(jì)文件中去重后uuid個(gè)數(shù)的方法,實(shí)例分析了Python正則匹配及字符串操作的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • Flask WTForms 表單插件的使用

    Flask WTForms 表單插件的使用

    本文主要介紹了Flask WTForms表單插件的使用,Python的WTForms庫(kù)通過(guò)提供表單的結(jié)構(gòu)、驗(yàn)證和渲染等功能,簡(jiǎn)化了表單的處理流程,感興趣的可以了解一下
    2023-11-11
  • 詳解Python if-elif-else知識(shí)點(diǎn)

    詳解Python if-elif-else知識(shí)點(diǎn)

    本篇文章給大家總結(jié)了Python中if-elif-else的相關(guān)知識(shí)點(diǎn)以及語(yǔ)法相關(guān)內(nèi)容,有興趣的朋友參考學(xué)習(xí)下。
    2018-06-06

最新評(píng)論

秭归县| 龙州县| 淮安市| 中江县| 施秉县| 济源市| 长沙市| 扶绥县| 彰化县| 同心县| 封丘县| 泰和县| 莒南县| 太仆寺旗| 永昌县| 大足县| 广河县| 定南县| 洛阳市| 穆棱市| 长海县| 会理县| 石河子市| 清新县| 达孜县| 永定县| 龙陵县| 皋兰县| 巴林右旗| 吐鲁番市| 建水县| 合水县| 丁青县| 汶上县| 礼泉县| 寿光市| 兖州市| 宁强县| 临安市| 青河县| 横峰县|