PyInstaller打包遇pip-system-certs失效及.dll解析问题求助
问题1:PyInstaller打包后pip-system-certs失效导致SSL验证错误
解决方案:
- 确保脚本开头显式初始化pip-system-certs:
import pip_system_certs pip_system_certs.inject() - 打包时除了
--hidden-import pip-system-certs,额外添加参数确保模块完整打包:pyinstaller --hidden-import pip-system-certs --collect-submodules pip-system-certs --copy-metadata pip-system-certs your_script.py - 若仍无效,可改用
certifi库替代,直接在代码中指定证书路径:
打包时PyInstaller会自动包含certifi的证书文件,无需额外参数。import ssl import certifi ssl._create_default_https_context = lambda: ssl.create_default_context(cafile=certifi.where())
问题2:Blosc2依赖的zstd.dll、lz4.dll、zlib-ng2.dll缺失
解决方案:
- 自动收集动态库:
- 生成spec文件:
pyi-makespec your_script.py - 编辑生成的
your_script.spec文件,修改Analysis部分:from PyInstaller.utils.hooks import collect_dynamic_libs a = Analysis( ['your_script.py'], # 保留原有其他参数 binaries=collect_dynamic_libs('blosc2'), # 保留原有其他参数 ) - 用spec文件打包:
pyinstaller your_script.spec
- 生成spec文件:
- 手动指定dll路径:若自动收集失败,找到dll所在路径(通常在Python安装目录的
Lib/site-packages/_blosc2下),打包时手动包含:
注意替换路径为你本地的实际路径,Windows下用pyinstaller --add-binary "C:/Python311/Lib/site-packages/_blosc2/zstd.dll;." --add-binary "C:/Python311/Lib/site-packages/_blosc2/lz4.dll;." --add-binary "C:/Python311/Lib/site-packages/_blosc2/zlib-ng2.dll;." your_script.py;分隔源路径和目标路径。
内容的提问来源于stack exchange,提问作者DBZHOU
相关产品推荐
相关产品推荐

