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

將Python應用打包成macOS應用的詳細步驟

 更新時間:2026年01月26日 10:01:21   作者:迎風斯黃  
這篇文章主要介紹了在macOS上打包Python應用的挑戰(zhàn)與注意事項,包括使用py2app、PyInstaller、Platypus和嵌入Python解釋器等工具和方案,文章詳細講解了每個工具的使用方法、優(yōu)缺點以及在打包過程中需要注意的問題,需要的朋友可以參考下

一、打包 macOS 應用的挑戰(zhàn)與注意事項

在 macOS 上打包 Python 應用,和在 Windows 上打包有不少相似點(都要把 Python 運行時 + 依賴打包進來),但也有自己獨特的挑戰(zhàn):

  • macOS 的應用分發(fā)機制有沙箱、簽名 (code signing)、Notarization(公證)等要求,新版 macOS 對未簽名或未公證的應用會發(fā)出警告或拒絕運行。
  • macOS 應用通常以 .app 包(bundle)的形式存在,里面結(jié)構(gòu)比較規(guī)范(Contents、MacOS、Resources、Info.plist 等),需要構(gòu)造正確的 bundle 結(jié)構(gòu)和元數(shù)據(jù)。
  • Python 擴展模塊(.so、.dylib)、動態(tài)庫、插件等的依賴路徑可能很復雜,可能需要處理加載路徑、符號鏈接、簽名一致性等問題。
  • 在 Apple Silicon(ARM 架構(gòu))和 Intel 架構(gòu)之間可能涉及構(gòu)建架構(gòu)兼容性問題(如果你要同時支持兩種架構(gòu))。
  • 要讓普通用戶雙擊就運行,還可能希望把 .app 放入 .dmg.pkg 分發(fā)形式,并做好圖標、安裝體驗、卸載等細節(jié)。

因此,在工具和流程選擇時,需要兼顧“可靠性”“分發(fā)體驗”“簽名/公證支持”等多個維度。

下面我先介紹幾種主流工具/方案,然后給出一個典型流程與調(diào)試建議。

二、常用工具 / 方案對比

以下是打包 Python 應用為 macOS 應用常見的幾種方式:

工具 / 方案適用場景優(yōu)點缺點 / 限制
py2app傳統(tǒng) macOS 平臺打包工具(類似于 Windows 的 py2exe)專門為 macOS 設計,集成了 bundle 結(jié)構(gòu)處理、Info.plist 填充、資源復制等邏輯。對于常見依賴(Tkinter、PyQt、Cocoa via PyObjC)支持較好。(py2app.readthedocs.io)構(gòu)建有時不夠靈活,對非常復雜依賴或大型科學計算庫(numpy、scipy 等)可能需要手工調(diào)整;不支持在非 macOS 平臺打包(你必須在 macOS 上運行打包工具)(PyPI)
PyInstaller(macOS 模式 / 生成 bundle)如果你已經(jīng)熟悉 PyInstaller,想用它在 macOS 上生成 .app bundle支持 “bundle (BUNDLE)” 模式,可以把 exe + 資源打包為 .app 包。你可以通過 spec 文件定制 Info.plist、bundle_identifier 等。(pyinstaller.org)對某些動態(tài)庫、插件可能需要調(diào)整;打包后還要做代碼簽名、公證、優(yōu)化資源,有時會遇到啟動時權限 / 加密 /沙箱限制問題。(Haim Gelfenbeyn’s Blog)
Platypus較小或腳本型的應用(如命令行腳本 / Python 腳本包裝成 GUI 應用)用于把腳本包裝為 macOS 應用包,較簡單上手,適合小工具類型應用。(Sveinbjörn Þórðarson)不擅長很復雜的 GUI 或重度依賴的庫;主要用于把腳本封裝為應用啟動器。
嵌入 Python 解釋器 / Framework + Xcode 工程希望把 Python 嵌入到原生 macOS 應用、或做高度定制化、或提交 App Store靈活性最高,可以把 Python 標準庫、擴展庫、解釋器嵌入為 Framework,結(jié)合 Objective-C/Swift 代碼調(diào)用或調(diào)度。適合復雜交互或混合開發(fā)場景。(Medium)學習和工程復雜度高;必須解決簽名、公證、架構(gòu)兼容性、二進制兼容性等多項問題;打包成本大。
其它輔助 / 分發(fā)工具輔助 .app 打包后的分發(fā)、安裝體驗如用 create-dmg.app 生成 .dmg、把 .app 打包成 .pkg、做簽名 / 公證 / stapling 等不是單獨的“打包 Python -> .app”工具,而是分發(fā)鏈上的補充工具

下面我逐個展開講。

三、py2app:最傳統(tǒng)且“mac 本土”的方案

3.1 py2app 介紹與原理

py2app 是一個 Python 包(通常作為 setuptools 的擴展命令),用于把 Python 腳本或包打包成 macOS 的 .app bundle。它的設計思路類似于 Windows 的 py2exe:分析你的腳本、收集依賴、復制資源、生成 bundle 結(jié)構(gòu),并在 .app 包里放入啟動器 (stub) 來啟動你的代碼。(py2app.readthedocs.io)

py2app 支持“alias 模式”(-A--alias)來構(gòu)建“指向源代碼”的 bundle,用于開發(fā)調(diào)試,而不是生成完整的獨立分發(fā)版本。(py2app.readthedocs.io)
但在 “standalone”(獨立版本)模式下,會把你的代碼、依賴庫、Python 運行時一并打包進 .app。(metachris.com)

3.2 使用示例與基本步驟

下面是一個基于 py2app 打包 GUI 程序(例如使用 Tkinter、PyQt、或其他純 Python GUI 庫)的簡單流程。

假設你有一個文件 main.py,內(nèi)容是:

import tkinter as tk

def main():
    root = tk.Tk()
    root.title("MyApp")
    tk.Label(root, text="Hello, macOS!").pack()
    root.mainloop()

if __name__ == "__main__":
    main()

你可以這樣打包:

在項目中創(chuàng)建 setup.py

from setuptools import setup

APP = ["main.py"]
DATA_FILES = []  # 如果有額外資源,如圖標、圖片、音頻等,放在這里
OPTIONS = {
    'argv_emulation': True,
    # 'iconfile': 'app.icns',  # 若要自定義圖標
    # 'includes': ['some_module'],  # 若有隱式導入
}

setup(
    app=APP,
    name="MyApp",
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    setup_requires=['py2app'],
)

構(gòu)建 alias(調(diào)試)模式:

python setup.py py2app -A

這種方式構(gòu)建出來的 .app 并不是完全獨立的,僅在當前機器可用,一般用于調(diào)試。(py2app.readthedocs.io)

構(gòu)建正式版本:

python setup.py py2app

運行后,會生成 dist/MyApp.app,這是可直接分發(fā)的包。(metachris.com)

測試:在 macOS 上雙擊 MyApp.app,看是否能正常啟動和運行。

若要生成 .dmg 格式分發(fā)包,可以在 .app 構(gòu)建成功后,用 create-dmg 等工具將 .app 打包為 .dmg,讓用戶通過拖拽安裝。(Medium)

  • 資源 / 隱式導入處理:如果你的代碼中有動態(tài)導入模塊、插件路徑或使用了非標準路徑掃描,你可能需要在 OPTIONS['includes']、OPTIONS['packages']、或者 OPTIONS['excludes'] 中手工指定額外模塊,以確保 py2app 能把它們包含進來。
  • 圖標:你可以提供 iconfile 選項,指定 .icns 圖標文件。
  • 資源文件:在 DATA_FILES 中列出你需要打包進入 .app 的資源(圖片、音頻、數(shù)據(jù)庫、配置文件等)。

3.3 優(yōu)化、注意點與坑

  • 對于大型庫(如 numpy、scipy、PIL、matplotlib 等),打包后的 .app 體積可能非常大,有時還會在啟動時因為庫文件或插件路徑問題崩潰。許多用戶反映這類庫在 py2app 打包后容易出問題。(Reddit)
  • 某些庫內(nèi)部使用 C 擴展或插件機制(如 Qt 插件、動態(tài)庫路徑查找等),py2app 默認的打包邏輯可能無法自動捕獲所有需要的 .dylib 或插件,需要你手工配置。
  • 你必須在 macOS 環(huán)境下運行 py2app 進行打包(不能在 Windows 或 Linux 上打 macOS 應用)。(PyPI)
  • 建議在一個干凈的 macOS 環(huán)境(沒有安裝你開發(fā)時的 Python 庫)或虛擬機中測試生成的 .app,以防“宿主開發(fā)環(huán)境”中的庫被誤引用。
  • 若你的 .app 未簽名 / 未公證,macOS 新版本很可能拒絕啟動或警告用戶。需要做后面的簽名/公證步驟。

總的來說,py2app 是一個相對成熟、社區(qū)較為熟悉的方案,但對于復雜依賴可能需要你手動調(diào)試。

四、使用 PyInstaller 在 macOS 上生成.appbundle

如果你已經(jīng)熟悉 PyInstaller 并希望在 macOS 上也用它來打包 .app,這是可行的。PyInstaller 在 macOS 平臺下支持生成 BUNDLE(即 .app)形式。(pyinstaller.org)

4.1 基本命令示例

假設你有 main.py(GUI 程序),你可以運行:

pyinstaller --windowed --name MyApp --icon app.icns main.py
  • --windowed 表示這是 GUI 程序,不要在控制臺打開終端窗口。
  • --name MyApp 指定輸出 .app 名稱(會生成 MyApp.app)。
  • --icon app.icns 指定應用圖標(macOS 圖標格式為 .icns)。

執(zhí)行后,dist 目錄中會出現(xiàn) MyApp.app。

你也可以在 spec 文件中更細致地控制:

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

block_cipher = None

a = Analysis(
    ['main.py'],
    pathex=[],
    binaries=[],
    datas=[],
    hiddenimports=[],
    hookspath=[],
    runtime_hooks=[],
    excludes=[],
    win_no_prefer_redirects=False,
    win_private_assemblies=False,
    cipher=block_cipher,
)

pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)

exe = EXE(
    pyz,
    a.scripts,
    [],
    exclude_binaries=True,
    name='MyApp',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    console=False,
)

coll = COLLECT(
    exe,
    a.binaries,
    a.zipfiles,
    a.datas,
    strip=False,
    upx=True,
    name='MyApp',
)

app = BUNDLE(
    coll,
    name='MyApp.app',
    icon='app.icns',
    bundle_identifier='com.yourcompany.myapp',
    info_plist={
        'CFBundleName': 'MyApp',
        'CFBundleVersion': '0.1.0',
    },
)

在這個 spec 中,BUNDLE 會把 coll 收集的內(nèi)容打成 .app 包,你可以指定 bundle_identifier、info_plist 字段、圖標等。(pyinstaller.org)

然后執(zhí)行:

pyinstaller MyApp.spec

即可生成 MyApp.app。

4.2 構(gòu)建.dmg分發(fā)包

通常你還想把 .app 包做成 .dmg 分發(fā)包。一個簡單方式是:

在命令行安裝 create-dmg(如果你用 Homebrew):

brew install create-dmg

假設你的 .appdist/MyApp.app,你可以:

mkdir dist/dmg
cp -R dist/MyApp.app dist/dmg/
create-dmg \
  --volname "MyApp" \
  --volicon "app.icns" \
  --window-pos 200 120 \
  --window-size 600 300 \
  --icon-size 100 \
  --icon "MyApp.app" 175 120 \
  --hide-extension "MyApp.app" \
  --app-drop-link 425 120 \
  dist/MyApp.dmg \
  dist/dmg/

這個流程在很多教程中常見,也是把 Python GUI 程序打為 macOS 分發(fā)包的常見方式。(Medium)

4.3 簽名、公證與 Hardened Runtime

對于 macOS 新版本,未簽名或未公證 (.notarize) 的 .app 很容易被 Gatekeeper 拒絕或報錯。使用 PyInstaller 打包后通常還需進行代碼簽名和公證處理。下面是常見流程(借鑒社區(qū)經(jīng)驗):

  1. 在打包 spec / BUNDLE 時,在 Info.plist 中設置適當鍵值(版本、bundle identifier 等)。(Haim Gelfenbeyn’s Blog)
  2. 對打出來的 .app 做 code signing:
codesign -s "Developer ID Application: Your Name (TEAMID)" --deep --timestamp --options runtime "dist/MyApp.app"

這里 --deep 表示對內(nèi)部所有可執(zhí)行文件 / 動態(tài)庫也做簽名,--options runtime 啟用 Hardened Runtime。(Haim Gelfenbeyn’s Blog)

創(chuàng)建 .zip.dmg,然后提交給 Apple Notarization 服務:

ditto -c -k --keepParent dist/MyApp.app dist/MyApp.zip
xcrun altool --notarize-app -t osx -f dist/MyApp.zip --primary-bundle-id com.yourcompany.myapp -u YOUR_APPLE_ID -p APP_SPECIFIC_PASSWORD

提交后等待公證審核。(Haim Gelfenbeyn’s Blog)

公證成功后,可以把票據(jù)“staple”到 .app 上:

xcrun stapler staple dist/MyApp.app

這樣用戶打開時不再每次聯(lián)網(wǎng)驗證,而是本地攜帶票據(jù)。(Haim Gelfenbeyn’s Blog)

最后把 .app.dmg 發(fā)布給用戶。

這個流程雖然有點繁瑣,但對于合規(guī)分發(fā)到 macOS 的普通用戶來說幾乎是必需的。

五、用 Platypus 封裝腳本型應用

如果你的應用比較輕量,可能只是一個命令行腳本或 Python 腳本,不需要復雜 GUI,你可以考慮用 Platypus

  • Platypus 是一個 macOS 工具,可以把腳本(Python、shell、Ruby、Perl 等)包裝成 .app 包,在用戶雙擊時以圖形界面或后臺執(zhí)行。(Sveinbjörn Þórðarson)
  • 它支持進度條、腳本輸出窗口、拖放文件傳參、權限提升等功能。(Sveinbjörn Þórðarson)
  • 它適合把腳本包裝成便于普通用戶使用的「可點擊的程序」,但對于復雜的 GUI 程序、重依賴庫、C 擴展等場景其處理能力有限。

如果你的項目規(guī)模不大,Platypus 是一個值得一試的輕量方案。

六、嵌入 Python 解釋器 / 自定義原生應用方式

對于需要最大靈活性、或希望混合使用 Python 與原生 Cocoa / Swift / Objective-C 的場景,你可以把 Python 解釋器 / 標準庫 /擴展庫嵌入到你自己的 macOS 應用工程中。這在某些跨平臺框架或蘋果平臺擴展中常見。中間可能需要用 PythonKit 或自己寫橋接代碼。(Medium)

優(yōu)點是你可以在 Xcode 工具鏈中更細致地控制簽名、沙箱權限、資源管理、安全策略等;但缺點是工程復雜度高,需要處理架構(gòu)兼容(ARM / x86_64)、符號沖突、動態(tài)庫兼容性、打包流程復雜等。

此外,如果你打算上架 Mac App Store,還需要遵守 Apple 的沙箱、庫驗證、簽名等限制,比如不能使用未經(jīng)允許的動態(tài)庫、必須啟用 Hardened Runtime、避免容許未簽名可執(zhí)行內(nèi)存等。嵌入方式通常要更費勁地處理這些問題。(Medium)

七、典型打包流程示例(以 PyInstaller 為例)

下面是一個綜合流程示例,假設你有一個 Python GUI 應用 main.py,想給 mac 用戶分發(fā)一個 .app / .dmg,具備簽名與公證支持。

步驟概要

  1. 在 macOS 上創(chuàng)建干凈環(huán)境(如 virtualenv 或干凈機器),安裝你的應用所需的依賴。
  2. 在 macOS 上運行 PyInstaller 打包成 .app
pyinstaller --windowed --name MyApp --icon app.icns main.py
  1. 在打包選項中通過 spec 文件填充 Info.plist、bundle identifier 等。
  2. 測試 .app 是否能在 macOS 上正常啟動。
  3. codesign.app 簽名(包括內(nèi)部庫、插件等)。
  4. xcrun altool 提交 .app(打包為 .zip.dmg)給 Apple 公證服務。
  5. stapler staple 將公證票據(jù)貼在 .app 上。
  6. 可選:將 .app 放入 .dmg、制作安裝體驗。
  7. 最終分發(fā)給用戶,建議讓用戶先在干凈系統(tǒng)試安裝 / 啟動。

示例腳本(shell 腳本模擬自動化流程)

下面是一個非常簡化的 Bash 腳本骨架,展示從打包到簽名與公證的流程:

#!/usr/bin/env bash
set -e

APP_NAME="MyApp"
BUNDLE_ID="com.mycompany.myapp"
ICON_FILE="app.icns"
PYTHON_SCRIPT="main.py"

# 1. 清理舊構(gòu)建
rm -rf build dist

# 2. 使用 PyInstaller 生成 .app
pyinstaller --windowed --name "$APP_NAME" --icon "$ICON_FILE" "$PYTHON_SCRIPT"

# 3. 簽名
codesign -s "Developer ID Application: Your Name (TEAMID)" \
  --deep --options runtime --timestamp \
  "dist/${APP_NAME}.app"

# 4. 制作 ZIP 或 DMG
ditto -c -k --keepParent "dist/${APP_NAME}.app" "dist/${APP_NAME}.zip"

# 5. 提交公證(需提前設置 Apple ID / 密碼 / keychain) 
xcrun altool --notarize-app -t osx -f dist/${APP_NAME}.zip \
  --primary-bundle-id "$BUNDLE_ID" -u APPLE_ID -p APP_SPECIFIC_PASSWORD

# 6. stapler 把公證票據(jù)貼到 .app
xcrun stapler staple "dist/${APP_NAME}.app"

echo "Done! You can distribute dist/${APP_NAME}.app (or convert to dmg)."

這個腳本僅為示例。實際中你需要處理的細節(jié)很多:檢查簽名狀態(tài)、處理簽名失敗重試、處理異步公證結(jié)果 polling、錯誤日志捕獲、公證失敗回退策略等。

八、常見問題、坑與調(diào)試建議

在把 Python 應用打包為 macOS 應用時,可能會遇很多細節(jié)問題,下面給出一些比較常見的坑和應對建議:

缺少某些 .dylib 或 插件無法加載

  • 使用工具(如 otool -L、dylibbundler)檢查可執(zhí)行或庫的依賴。
  • 在打包工具(py2app / PyInstaller)中顯式把缺少的庫或插件加入 datas / binaries / hiddenimports。
  • 有些庫內(nèi)部對插件或路徑做動態(tài)查找(如 Qt 插件),你可能得寫 hook 腳本或手工拷貝插件目錄。

簽名失敗 / 無法公證 / Gatekeeper 拒絕啟動

  • 確保你有正確的 Developer ID Application 證書,并在 Keychain 中安裝好。
  • 使用 codesign --deep --options runtime --timestamp,并簽所有子文件。
  • 確保你的 .dylib / .so / 擴展模塊都已簽。
  • 公證提交失敗 → 檢查 Apple 的日志報告,查看可能違反公證規(guī)則的庫或權限問題。
  • 公證通過后使用 stapler staple 把票據(jù)貼上。
  • 在新版本 macOS 上,某些未簽名或未公證的應用一啟動就被阻止。

啟動后崩潰 / 無法加載資源 / 模塊未找到

  • 在開發(fā)階段先打 “目錄” 模式(bundle 模式)而不是壓縮或深度打包,查看文件結(jié)構(gòu)是否正確。
  • Info.plistinfo_plist 參數(shù)中設置正確路徑、資源目錄、可執(zhí)行名、CFBundleExecutable 等。
  • 打開控制臺 (Console.app) 查看 macOS 日志 / 崩潰報告,可能提示缺失庫或權限拒絕。
  • 在打包時啟用調(diào)試模式、輸出日志、保持調(diào)試符號,以便定位問題。

架構(gòu)(Apple Silicon / Intel)不兼容

  • 如果你希望支持兩種架構(gòu)(universal 二進制),可能需要分別針對 x86_64 和 arm64 構(gòu)建,或者用 lipo / universal2 構(gòu)建方式合并。
  • 某些依賴庫可能在某個架構(gòu)下未編譯好,必須先編譯支持對應架構(gòu)再打包。

體積過大 / 冗余文件太多

  • 檢查打包后 .app/Contents/Frameworks / .app/Contents/Resources 是否包含很多不必要的測試 / 示例 /調(diào)試文件。
  • 刪除不必要模塊,使用 --excludeexcludes 選項。
  • 對資源文件做壓縮、剔除未用資源。

九、總結(jié)與建議

  • 對于多數(shù)純 Python GUI 程序,py2app 是 macOS 平臺上最“本地化”的選擇,社區(qū)支持也比較成熟。
  • 如果你已經(jīng)使用 PyInstaller 在 Windows 或 Linux 上打包,并希望代碼分發(fā)邏輯一致,可以考慮用 PyInstaller 的 BUNDLE 模式在 macOS 上打包應用。
  • 無論用哪種工具,最終要面對的都是 macOS 的簽名、公證、架構(gòu)兼容、動態(tài)庫依賴等問題。
  • 在打包過程中,一定要在干凈環(huán)境或虛擬機里做最終測試,不能只在開發(fā)機上驗證。
  • 對于“桌面級”應用,做好 .dmg / .pkg 的用戶體驗以及簽名 / 公證是關鍵一環(huán)。
  • 如果對嵌入式或混合場景有需求(例如你的應用用 Swift / Cocoa 與 Python 混合),可以考慮把 Python 嵌入到原生應用中,但那條路比較復雜。

以上就是將Python應用打包成macOS應用的詳細步驟的詳細內(nèi)容,更多關于Python應用打包成macOS應用的資料請關注腳本之家其它相關文章!

相關文章

  • python常規(guī)方法實現(xiàn)數(shù)組的全排列

    python常規(guī)方法實現(xiàn)數(shù)組的全排列

    這篇文章主要介紹了python常規(guī)方法實現(xiàn)數(shù)組的全排列,實例分析了全排列的概念及Python常規(guī)實現(xiàn)技巧,需要的朋友可以參考下
    2015-03-03
  • Python刪除字典中的某個key的常用方法

    Python刪除字典中的某個key的常用方法

    字典是Python中的一種數(shù)據(jù)類型,它是一個無序的鍵值對集合,在實際的編程中,我們經(jīng)常需要刪除字典中的某個鍵值對,本文將從多個角度分析Python刪除字典中的某個key的方法,需要的朋友可以參考下
    2024-10-10
  • Python圖像運算之圖像灰度直方圖對比詳解

    Python圖像運算之圖像灰度直方圖對比詳解

    本篇文章將結(jié)合直方圖分別對比圖像灰度變換前后的變化,方便大家更清晰地理解灰度變換和閾值變換,文中的示例代碼講解詳細,需要的可以參考一下
    2022-08-08
  • python中global與nonlocal比較

    python中global與nonlocal比較

    這篇文章主要介紹了python中global與nonlocal比較,global關鍵字用來在函數(shù)或其他局部作用域中使用全局變量,nonlocal關鍵字用來在函數(shù)或其他作用域中使用外層(非全局)變量,需要的朋友可以參考下
    2014-11-11
  • Python面向?qū)ο髮崿F(xiàn)方法總結(jié)

    Python面向?qū)ο髮崿F(xiàn)方法總結(jié)

    這篇文章主要介紹了Python面向?qū)ο髮崿F(xiàn)方法總結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • python namedtuple函數(shù)的使用

    python namedtuple函數(shù)的使用

    今天介紹collections里面的一個好用的小函數(shù): namedtuple函數(shù)(不創(chuàng)類而可以擁有類的便利),例如可以使用object.attribute
    2021-06-06
  • twilio python自動撥打電話,播放自定義mp3音頻的方法

    twilio python自動撥打電話,播放自定義mp3音頻的方法

    今天小編就為大家分享一篇twilio python自動撥打電話,播放自定義mp3音頻的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 使用Python3 poplib模塊刪除服務器多天前的郵件實現(xiàn)代碼

    使用Python3 poplib模塊刪除服務器多天前的郵件實現(xiàn)代碼

    這篇文章主要介紹了使用Python3 poplib模塊刪除多天前的郵件的實現(xiàn)代碼,代碼簡單易懂,非常不錯,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • GDAL 矢量屬性數(shù)據(jù)修改方式(python)

    GDAL 矢量屬性數(shù)據(jù)修改方式(python)

    這篇文章主要介紹了GDAL 矢量屬性數(shù)據(jù)修改方式(python),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python3 解決讀取中文文件txt編碼的問題

    Python3 解決讀取中文文件txt編碼的問題

    今天小編就為大家分享一篇Python3 解決讀取中文文件txt編碼的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12

最新評論

公主岭市| 连平县| 罗平县| 清流县| 合作市| 香港| 永兴县| 寿宁县| 清丰县| 理塘县| 黄石市| 兴文县| 宁化县| 长岛县| 新源县| 阳曲县| 建昌县| 贵德县| 衡阳县| 沙河市| 哈巴河县| 余江县| 五寨县| 鄂托克前旗| 拜泉县| 通榆县| 三亚市| 磐石市| 新兴县| 苗栗市| 滨海县| 蒲江县| 景谷| 松阳县| 陵川县| 仁布县| 阿鲁科尔沁旗| 清原| 建昌县| 上饶县| 漯河市|