今天,一位朋友在服务器“Centos 7 x86_64 EZ”安装“宝塔面板”的时候,结果报错如下:
Installing collected packages: pycparser, cffi, cryptography, pyOpenSSl
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed.
This behaviour is the source of the following dependency conflicts.
aliyun-python-sdk-core 2.13.30 requires cryptography<3.3,>=2.9.2, but you have cryptography 41.0.1 which is incompatible.
Successfully installed cffi-1.15.1 cryptography-41.0.1 pyOpenSSl-23.2.0 pycparser-2.21
WARNING: You are using pip version 20.3.3; however, version 23.1.2 is available.
You should consider upgrading via the '/www/server/panel/pyenv/bin/python3.7 -m pip install --upgrade pip' command.
中文翻译
错误:pip的依赖关系解析程序当前没有考虑所有已安装的程序包。
这种行为是以下依赖冲突的根源。
aliyun-python-sdk-core 2.13.30 需要 cryptography<3.3,>=2.9.2,但您有不兼容的 cryptography41.0.1。
原因
通过上面的翻译,也知道原因了,通俗点讲,主要原因就是:
aliyun-python-sdk-core 是2.13.30版本,需要cryptography版本小于3.3,大于等于2.9.2在一起运行,才能相互兼容。、
但是,我们装的cryptography版本是41.0.1。所以就不兼容了,不能一起运行。
我去“pypi.org”查了一下。
aliyun-python-sdk-core模块:这是阿里云Python SDK的核心模块。阿里云Python SDK是官方软件开发工具包。它使您可以轻松地将Python应用程序、库或脚本与Aliyun服务集成。此模块适用于Python版本:2.7及以上。
cryptography是一个为Python开发人员提供加密配方和基元的包。我们的目标是让它成为您的“加密标准库”。它支持Python 3.7+和PyPy3 7.3.10+。
cryptography包括常见密码算法的高级配方和低级接口,例如对称密码、消息摘要和密钥推导函数。例如,要使用密码学的高级对称加密配方对某些内容进行加密。
解决方法
关于这个问题,知道了原因,我的解决方法有以下几种。以这位朋友的情况为例子,大家可以参考一下。
主要是给大家提供解决问题的一些思路及方法。
第一种:卸载宝塔面板,再重新安装
1、卸载“宝塔面板”命令:
/etc/init.d/bt stop && chkconfig --del bt && rm -f /etc/init.d/bt && rm -rf /www/server/panel
2、Centos安装“宝塔面板”命令:
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
第二种:既然是冲突,相互不兼容,那就删除掉无用的模块
通过上面的原因分析,大家也知道 aliyun-python-sdk 主要就是将Python应用程序、库或脚本与Aliyun服务集成。如果你没有用上这些,是完全可以删除掉的。
1、列示出Python中安装了哪些第三方库?
命令:
/www/server/panel/pyenv/bin/python3.7 -m pip list
2、删除所有带有“aliyun-python-sdk”标记的模块。
命令:
/www/server/panel/pyenv/bin/python3.7 -m pip uninstall aliyun-python-sdk-core
/www/server/panel/pyenv/bin/python3.7 -m pip uninstall aliyun-python-sdk-core-v3
/www/server/panel/pyenv/bin/python3.7 -m pip uninstall aliyun-python-sdk-kms
第三种:既然是版本不兼容,可以适当的降低版本来达到相互兼容的要求
既然说cryptography版本高了,那我按照要求降低不就可以解决此问题了吗?
要求:cryptography<3.3,>=2.9.2
我就用 cryptography 3.2.1 ,这样就满足了。
1、先卸载掉cryptography
命令:
/www/server/panel/pyenv/bin/python3.7 -m pip uninstall cryptography
2、再安装cryptography版本3.2.1
命令:
/www/server/panel/pyenv/bin/python3.7 -m pip install cryptography==3.2.1
总结:
以上几种方法各自有它的优缺点,主要是看哪一种最适合自己的情况吧!反正解决问题的思路大概就是这几个方向。希望能够让你开悟并帮助到你。