PyInstaller打包单文件跨平台运行提示libcrypt.so.1缺失如何解决
问题根因
你遇到的报错核心是两个常见误区导致的:
- 依赖名称匹配错误:报错提示缺少的是
libcrypt.so.1(glibc提供的密码哈希库),你确认存在的是libcrypto.so.1.1(OpenSSL提供的加密库),二者是完全不同的依赖库,没有替代关系。 - 可能存在架构/发行版不兼容:源打包环境是aarch64架构,如果目标运行环境是x86_64等其他架构,就算目标环境存在同名依赖,架构不匹配也无法调用。
修复方案
- 目标环境直接安装缺失依赖
根据目标系统的发行版选择对应命令安装即可:
Debian/Ubuntu系列:
RHEL/CentOS/Fedora系列:sudo apt install libcrypt1
安装完成后执行sudo dnf install libxcrypt-compatldconfig -p | grep libcrypt.so.1验证,输出对应路径即可正常运行程序。 - 打包时绑定依赖避免目标环境安装
如果你需要保持单文件的零依赖特性,在打包命令中添加--add-binary参数,直接把源环境的libcrypt.so.1打进二进制包内,修改后的打包命令如下:pyinstaller --hidden-import pyaudio --hidden-import wave --hidden-import Logger --hidden-import json --hidden-import websockets --hidden-import asyncio --add-binary /usr/lib/aarch64-linux-gnu/libcrypt.so.1:. --onefile Run_SD.py - 跨架构运行兜底方案
如果源打包环境和目标运行环境架构不同(比如源是aarch64,目标是x86_64),必须在和目标环境同架构、同大版本发行版的环境下打包,否则系统底层依赖的架构、版本都不兼容,上述方案均无法生效。
内容的提问来源于stack exchange,提问作者geoffr98
相关产品推荐
相关产品推荐

