Ubuntu下执行pip命令出现TypeError: deprecated()错误求助
解决pip安装软件包时出现
TypeError: deprecated() got an unexpected keyword argument 'name'的问题 错误根源分析
从错误栈可见,问题源于用户本地目录下的pyopenssl包与系统pip依赖的cryptography版本不兼容:/home/dhome/.local/lib/python3.8/site-packages/OpenSSL/crypto.py中调用utils.deprecated()时传入了该版本不支持的name参数,同时系统pip(20.0.2版本)与用户本地安装的Python包存在冲突。
具体解决步骤
1. 清理冲突的本地pyopenssl包
卸载用户本地安装的pyopenssl,消除与系统依赖的冲突:
pip3 uninstall -y pyopenssl
若提示权限问题,改用用户本地pip执行:
python3 -m pip uninstall -y pyopenssl --user
2. 安装兼容版本的依赖包
指定与系统pip 20.0.2兼容的cryptography和pyopenssl版本组合安装:
python3 -m pip install cryptography==3.3.2 pyopenssl==20.0.1 --user
3. 统一pip调用方式
避免直接使用pip命令导致版本混淆,优先通过Python模块调用pip:
- 用户本地安装:
python3 -m pip install <目标软件包名> - 全局安装(需sudo):
sudo python3 -m pip install <目标软件包名>
4. (推荐)使用虚拟环境隔离依赖
创建虚拟环境彻底隔离系统与项目依赖,从根源避免包冲突:
# 安装虚拟环境工具 sudo apt-get install python3-venv # 创建并激活虚拟环境 python3 -m venv my_project_env source my_project_env/bin/activate # 在虚拟环境内安装所需包 pip install cryptography
内容的提问来源于stack exchange,提问作者dhairyashil
相关产品推荐
相关产品推荐

