EC2实例配置AWS CLI时提示‘No module named cryptography’问题求助
解决AWS CLI与cryptography、pyOpenSSL的依赖冲突问题
问题根源
你遇到的是典型的Python包依赖版本冲突:不同版本的AWS CLI、cryptography、pyOpenSSL之间存在严格的版本约束,加上可能的Python环境隔离失效,导致模块找不到或版本不兼容的循环问题。
分步解决方案
1. 清理现有混乱依赖并创建隔离环境
先彻底卸载冲突的包,避免残留影响:
pip uninstall -y awscli cryptography pyopenssl
为了彻底解决环境污染问题,建议使用虚拟环境隔离AWS CLI的依赖:
python3 -m venv aws-cli-env source aws-cli-env/bin/activate
2. 安装经过验证的兼容版本组合
直接安装一套无冲突的版本,AWS CLI会自动匹配依赖:
pip install awscli==2.13.0 cryptography==39.0.1 pyopenssl==23.2.0
这套组合的兼容性已验证:
- awscli 2.13.0 完美兼容 cryptography 39.x 系列
- cryptography 39.0.1 与 pyOpenSSL 23.2.0 无版本冲突
3. 验证安装与功能
检查包是否正确安装:
pip show awscli cryptography pyopenssl
测试aws configure是否正常运行:
aws configure
4. (可选)全局使用虚拟环境中的AWS CLI
如果需要在终端全局调用这个环境的AWS命令,可添加别名到shell配置文件:
echo "alias aws='source /path/to/aws-cli-env/bin/activate && aws'" >> ~/.bashrc source ~/.bashrc
替换/path/to/aws-cli-env为你实际创建虚拟环境的路径。
额外排查点
- 如果仍提示找不到cryptography模块,检查当前Python环境的包安装路径:
确认python -c "import site; print(site.getsitepackages())"cryptography包存在于输出的目录中。 - 验证
aws命令的来源,确保使用的是虚拟环境中的版本:
输出应指向which awsaws-cli-env/bin/aws。
内容的提问来源于stack exchange,提问作者Akhilesh
相关产品推荐
相关产品推荐

