You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Anaconda环境下Python Requests报错:Crypto.dll缺失排查

解决Windows Anaconda环境中Requests导入失败(crypto.dll找不到)的问题

我之前在Anaconda环境里折腾requests的时候也碰到过一模一样的坑!核心原因是老版本的cryptography(2.2.2)和asn1crypto在Windows环境下的库路径匹配有bug,下面给你几个亲测有效的解决办法:

方案一:给OpenSSL库创建软链接(快速临时修复)

这个方法直接解决crypto.dll找不到的问题——因为实际存在的是带版本号的libcryptoXXX.dll,我们只需要做个映射:

  • 找到你的Anaconda环境的OpenSSL bin目录,比如D:\Anaconda3\envs\你的环境名\Library\bin(替换成你自己的路径)
  • 右键以管理员身份打开命令提示符,进入上述目录
  • 执行软链接命令,把带版本号的libcrypto文件映射成crypto.dll:
    mklink crypto.dll libcrypto-1_1-x64.dll
    
    注意:把libcrypto-1_1-x64.dll换成你目录里实际存在的libcrypto文件名(比如32位系统可能是libcrypto-1_1.dll)

方案二:升级cryptography版本(更稳妥的长期解决方案)

老版本的cryptography和asn1crypto兼容性问题较多,直接升级到新的稳定版就能彻底解决:

  • 先激活你的Anaconda环境:
    conda activate 你的环境名
    
  • 卸载旧版本的cryptography:
    pip uninstall cryptography -y
    
  • 安装兼容的新版本cryptography,再重装requests:
    pip install cryptography>=3.0
    pip install requests --force-reinstall
    

方案三:用conda安装cryptography和requests(最省心)

conda的预编译包已经适配了Windows环境的依赖路径,不会出现dll找不到的问题:

  • 激活环境后直接执行:
    conda install cryptography requests -y
    

为什么会出现这个问题?

cryptography 2.2.2是比较老旧的版本,当时asn1crypto的代码在Windows下硬编码查找crypto.dll,但后来OpenSSL的库命名规范改成了带版本号的格式(比如libcrypto-1_1-x64.dll),而Anaconda环境里的OpenSSL库正是这种带版本号的,所以就出现了“找不到crypto.dll”的错误。

内容的提问来源于stack exchange,提问作者Justin Olbrantz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:24:42