先執行命令如下:
pip install pyinstaller
py -m PyInstaller --log-level=DEBUG --add-data "config.ini;." nmpa_gui.py
很快在dist目錄下就有生成一個nmpa_gui文件夾,運行 nmpa_gui.exe,報錯:
1??初始化爬蟲…
程序執行出錯: ‘database’
解決辦法:需要把config文件(數據庫配置信息)拷貝一份到nmpa_gui文件夾下。繼續報錯:
2??初始化爬蟲…
程序執行出錯: No localization support for language ‘eng’
解決辦法:手動復制 locales 文件夾到項目目錄并打包(簡單直接)
找到你當前環境中安裝的 MySQL Connector 的 locales 文件夾:
默認路徑為:
C:\Users\<你的用戶名>\AppData\Roaming\Python\Python311\site-packages\mysql\connector\locales
依舊報錯:
3??初始化爬蟲…
程序執行出錯: Authentication plugin ‘mysql_native_password’ is not supported
將 _mysql_connector.pyd 復制到項目目錄,文件源路徑在
C:\Users\<你的用戶名>\AppData\Roaming\Python\Python311\site-packages
建議在你的項目根目錄下創建一個文件夾,比如 internal_libs/,然后把 _mysql_connector.pyd 放進去,另外還需新建文件夾dlls,將libmysql.dll 拷貝到下面。
同時修改.spec文件,主要是 binaries,datas,hiddenimports 這三處:
# -*- mode: python ; coding: utf-8 -*-import os
from PyInstaller.utils.hooks import collect_data_files# 收集 mysql connector 的語言資源(eng)
mysql_locales = collect_data_files('mysql.connector', subdir='locales')block_cipher = Nonea = Analysis(['nmpa_gui.py'],pathex=[os.path.abspath(".")],binaries=[('internal_libs\\_mysql_connector.cp311-win_amd64.pyd', '.'),('dlls\\libmysql.dll', '.') # 添加 libmysql.dll 支持],datas=[('config.ini', '.'),('locales', 'mysql\\connector\\locales')] + mysql_locales,hiddenimports=['mysql.connector.authentication','mysql.connector.locales.eng.client_error','mysql.connector.connection_cext','mysql.connector.plugins.mysql_native_password', # ?? 關鍵:顯式導入認證插件],hookspath=[],hooksconfig={},runtime_hooks=[],excludes=[],noarchive=False,optimize=0,
)pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)exe = EXE(pyz,a.scripts,[],exclude_binaries=True,name='nmpa_gui',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=True, # 保持控制臺輸出便于調試認證問題disable_windowed_traceback=True,argv_emulation=False,
)coll = COLLECT(exe,a.binaries,a.zipfiles,a.datas,strip=False,upx=True,upx_exclude=[],name='nmpa_gui',clean=True,
)
對了,每次重新打包前,建議先清一下緩存,bat命令如下:
@echo off
echo 正在清理 PyInstaller 緩存...
rmdir /s /q build dist __pycache__ __pyinstaller
del /q *.pyc *.pyo *.spec
echo 清理完成。
最終使用如下打包命令:
py -m PyInstaller --noconfirm nmpa_gui.spec
至此,順利打包成功并成功運行!
怎么樣,看著是不是瞬間就高大上一些了,Python真是利器!!!后續可以再放出來一些配置,比如一批抓取多少頁后休息,每插入一頁后休息多久,一批完成后休息多久等等!
P.S.因為Cursor又到期了,這點小問題,懶得再去麻煩他, 這次打包中遇到的錯誤,尤其是困擾比較久的問題3??,最終在阿里通義靈碼的技術支持下,得以解決,在此表示感謝,隔壁那位CODEBUDDY和大傻子差不多!