如何解决:ImportError: 导入_bcrypt时DLL加载失败问题
解决Python 3.9 + Paramiko 导入时 bcrypt DLL 加载失败问题
问题场景
在Windows 10 Pro系统上使用Python 3.9,导入paramiko时触发bcrypt的DLL加载错误,具体错误如下:
Traceback (most recent call last): File "d:\remote_conn\client-copy.py", line 44, in import sys, os, paramiko, time File "C:\Python39\lib\site-packages\paramiko\__init__.py", line 22, in from paramiko.transport import ( File "C:\Python39\lib\site-packages\paramiko\transport.py", line 93, in from paramiko.dsskey import DSSKey File "C:\Python39\lib\site-packages\paramiko\dsskey.py", line 37, in from paramiko.pkey import PKey File "C:\Python39\lib\site-packages\paramiko\pkey.py", line 32, in import bcrypt File "C:\Python39\lib\site-packages\bcrypt\__init__.py", line 13, in from ._bcrypt import ( ImportError: DLL load failed while importing `_bcrypt`: The specified procedure could not be found.
已尝试的排查步骤:
- 更新所有包
- 安装Microsoft Visual C++ Redistributable for Visual Studio 2015-2022(x86/x64)和Microsoft Visual C++ Redistributable 2013(x64)
- 通过Git安装OpenSSL
- 确认包含DLL文件的目录已加入PATH环境变量(C:\Windows\system32、C:\Python39\DLLs)
解决建议
1. 安装与Python 3.9兼容的bcrypt版本
当前安装的bcrypt版本可能和Python3.9存在兼容性问题,卸载现有版本后安装指定稳定版:
pip uninstall bcrypt -y pip install bcrypt==3.2.0
2. 检查并替换bcrypt的编译扩展文件
找到Python安装目录下的C:\Python39\lib\site-packages\bcrypt文件夹,查看是否存在_bcrypt.pyd文件(这是bcrypt的核心编译扩展,本质是DLL格式):
- 如果文件存在,用Dependency Walker工具打开它,查看依赖的所有DLL是否有缺失或版本不匹配的情况
- 若发现缺失的DLL,找到对应版本的文件放入
C:\Windows\system32或C:\Python39\DLLs目录,确保这些目录在系统PATH中
3. 改用纯Python版bcrypt替代
安装纯Python实现的py-bcrypt,替换paramiko中的bcrypt依赖:
pip install py-bcrypt
找到C:\Python39\lib\site-packages\paramiko\pkey.py文件,备份后将import bcrypt修改为import pybcrypt as bcrypt
4. 调整Python版本
如果业务允许,将Python3.9升级到3.10或降级到3.8,这些版本与bcrypt的兼容性更稳定,重新安装所有依赖后测试导入是否正常
内容的提问来源于stack exchange,提问作者3M_YE
相关产品推荐
相关产品推荐

