WordPress课程广告

宝塔阿里云OSS插件TypeError: deprecated() got an unexpected keyword argument 'name'报错解决

释放双眼,带上耳机,听听看~!

错误介绍

今天在使用宝塔阿里云OSS插件(免费)进行对网站自动备份的配置的时候,出现了这个错误,自己先各种折腾(升级宝塔/修复宝塔/升级插件/降级插件)依然无效。网上一通找,给出的方法统统无效。

官方论坛中也有人提问过,看评论出现的人也不是很少(类型帖子或者错误有好几个…)…

宝塔阿里云OSS插件TypeError: deprecated() got an unexpected keyword argument 'name'报错解决 1

帖子给出的方法是

重新获取新的面板环境和更新包

curl http://download.bt.cn/install/update_panel.sh|bash

我使用后并没有任何效果…

解决建议

curl http://download.bt.cn/install/update_panel.sh|bash

可能对你有效,可以先尝试,毕竟是官方回复,也有评论表示根据里面的方法是成功的。

下面我贴一下宝塔论坛里面的链接,感兴趣可以自己访问查看,

宝塔论坛文章

https://www.bt.cn/bbs/thread-125719-1-1.html

https://www.bt.cn/bbs/thread-127199-1-1.html

https://www.bt.cn/bbs/thread-113949-1-1.html

错误日志信息

Traceback (most recent call last):
File "class/CloudStoraUpload.py", line 144, in __init__
from alioss_main import OSSClient as oc
File "/www/server/panel/plugin/alioss/alioss_main.py", line 27, in <module>
import oss2
File "/www/server/panel/pyenv/lib/python3.7/site-packages/oss2/__init__.py", line 15, in <module>
from .resumable import resumable_upload, resumable_download, ResumableStore, ResumableDownloadStore, determine_part_size
File "/www/server/panel/pyenv/lib/python3.7/site-packages/oss2/resumable.py", line 19, in <module>
from .crypto_bucket import CryptoBucket
File "/www/server/panel/pyenv/lib/python3.7/site-packages/oss2/crypto_bucket.py", line 10, in <module>
from .crypto import BaseCryptoProvider
File "/www/server/panel/pyenv/lib/python3.7/site-packages/oss2/crypto.py", line 21, in <module>
from aliyunsdkcore import client
File "/www/server/panel/pyenv/lib/python3.7/site-packages/aliyunsdkcore/client.py", line 31, in <module>
from aliyunsdkcore.vendored.requests import codes
File "/www/server/panel/pyenv/lib/python3.7/site-packages/aliyunsdkcore/vendored/requests/__init__.py", line 48, in <module>
from .packages.urllib3.contrib import pyopenssl
File "/www/server/panel/pyenv/lib/python3.7/site-packages/aliyunsdkcore/vendored/requests/packages/urllib3/contrib/pyopenssl.py", line 46, in <module>
import OpenSSL.SSL
File "/www/server/panel/pyenv/lib/python3.7/site-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import SSL, crypto
File "/www/server/panel/pyenv/lib/python3.7/site-packages/OpenSSL/SSL.py", line 35, in <module>
from OpenSSL.crypto import (
File "/www/server/panel/pyenv/lib/python3.7/site-packages/OpenSSL/crypto.py", line 971, in <module>
name="X509Extension",
TypeError: deprecated() got an unexpected keyword argument 'name'

|-链接云存储失败,请检查配置是否正确!

错误日志截图

宝塔阿里云OSS插件TypeError: deprecated() got an unexpected keyword argument 'name'报错解决 2

尽管提示:链接云存储失败,请检查配置是否正确!但是实际配置是正确的。

如果你在使用较低版本的OSS插件,可能可以在软件商店的时候访问打开这个插件进行配置,并访问OSS Bucket的目录,但是备份的时候会触发错误,如果升级到6.8版本,可能直接打开这个插件就报错了…

解决过程

一通折腾都没有效果后,我自己根据错误信息开始处理,

错误分析

日志显示了一个TypeError,说deprecated()函数收到了一个意外的关键字参数’name’。
这个情况一般是版本不兼容引起的,。

通过追踪的信息,我们可以看到,这个错误最初是从OpenSSL库中的crypto.py文件中引发的。具体来说,是在初始化X509Extension时调用了deprecated()函数,而这个函数并不支持传入name这个参数。

可能原因

你当前使用的OpenSSL库版本可能与其他依赖库(如aliyunsdkcore或requests)不兼容。在更新或更改某个库后,可能导致了这种不匹配。

得到了原因后,我先切入到宝塔所用的虚拟环境

source /www/server/panel/pyenv/bin/activate 

然后查看了当前pyOpenSSL的版本,

pip show pyOpenSSL

我以为是pyOpenSSL这玩意版本太高了…想着先弄个低版本的试试,就去pyOpenSSL官网找了个低版本的版本号先装下看看。

宝塔阿里云OSS插件TypeError: deprecated() got an unexpected keyword argument 'name'报错解决 3

问题真正原因

一装,就找到真正的原因所在了:

宝塔阿里云OSS插件TypeError: deprecated() got an unexpected keyword argument 'name'报错解决 4

确认问题

所以,如果你也出现了相同的问题,根据宝塔人员回复的内容又无法解决,就可以先看下自己几个模块的版本,看下它们的版本号,是否和我的情况类似:

pip show pyOpenSSL
pip show cryptography
pip show aliyunsdkcore

开始解决

卸载当前版本的cryptography:

pip uninstall cryptography

安装兼容版本的cryptography:

接着,安装一个与aliyun-python-sdk-core兼容的版本,比如cryptography 3.2.1(你也可以自己选择其他<3.3且在>=2.9.2范围内的一个版本):

pip install cryptography==3.2.1

当你在安装低版本的 时候,还会遇见一个依赖冲突问题,就是pyOpenSSL依赖的cryptography版本可能是比较高的版本。

宝塔阿里云OSS插件TypeError: deprecated() got an unexpected keyword argument 'name'报错解决 5

这个时候你只需要卸载掉你当前的pyOpenSSL,安装依赖要求只需要cryptography 3.2.1版本的pyOpenSSL即可。

pip uninstall pyOpenSSL

cryptography==3.2.1的版本,我去pyOpenSSL官方文档看了,pyOpenSSL==20.0.1版本是支持的,我就安装了pyOpenSSL==20.0.1版本,安装完成,再去备份,就成功了,问题解决。

pip install pyOpenSSL==20.0.1
宝塔阿里云OSS插件TypeError: deprecated() got an unexpected keyword argument 'name'报错解决 6

数据备份运行成功截图

宝塔阿里云OSS插件TypeError: deprecated() got an unexpected keyword argument 'name'报错解决 7

解决须知

我升级/修复了宝塔面板和OSS插件,以及使用了:

curl http://download.bt.cn/install/update_panel.sh|bash

手动更新面板环境等操作,理论来说,当前的环境应该是最合适宝塔的,使用上述的解决方法修改了pyOpenSSL和cryptography的版本,尽管未出现依赖冲突、不兼容的报错,但是也有可能会出现一些未知的问题。

可能出现错误解决

安装cryptography报错解决

安装cryptography==3.2.1的过程中,你可以会出现类似的错误,

Looking in indexes: https://mirrors.tencent.com/pypi/simple
Requirement already satisfied: cryptography==3.2.1 in /www/server/panel/pyenv/lib/python3.7/site-packages (3.2.1)
ERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory: '/www/server/panel/pyenv/lib/python3.7/site-packages/cryptography-3.2.1.dist-info/METADATA'

遇到这个错误通常是由于cryptography库的目录或安装文件损坏导致的。pip在尝试访问某个文件时遇到了No such file or directory的错误。

解决步骤

下面是几个有效的步骤来解决这个问题:

彻底卸载cryptography:

首先,你需要尝试彻底卸载cryptography库,包括可能存在的残留文件:

pip uninstall cryptography

如果卸载过程中还有错误,尝试强制卸载:

pip uninstall -y cryptography
宝塔阿里云OSS插件TypeError: deprecated() got an unexpected keyword argument 'name'报错解决 8

因为我们之前已经卸载过了,运行上述命令出现错误不管它,继续往下看:

检查并删除残留文件:

确认cryptography相关的文件夹已被删除。使用以下命令手动检查并删除可能还残留的文件:

rm -rf /www/server/panel/pyenv/lib/python3.7/site-packages/cryptography*

注意替换为你宝塔自己实际的环境路径

清理pip的缓存:

清理pip的缓存,确保后续安装不使用缓存的损坏文件:

pip cache purge

重新安装cryptography:

pip install cryptography==3.2.1

运行后出现:Successfully installed cryptography-3.2.1没报错即代表安装成功了。
下面一步可以忽略。

检查安装后的结果:

安装完成后,使用pip show命令查看版本来确认验证是否成功安装:

pip show cryptography

相关资料

pyOpenSSL官网

https://www.pyopenssl.org/

每个版本的changelog页面可以看见对应要求的cryptography版本

https://www.pyopenssl.org/en/20.0.1/changelog.html

宝塔阿里云OSS插件TypeError: deprecated() got an unexpected keyword argument 'name'报错解决 9

给TA打赏
共{{data.count}}人
人已打赏
服务器相关

使用阿里云OSS字体文件加载失败问题解决

2024-2-23 20:52:20

Python RequestsPython异常处理Python爬虫Python笔记

Python requests 异常Max retries exceeded with url: 请求地址… (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1129)')))"))}解决

2024-1-6 14:34:35

WordPress网站建设宣传图片
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
展开目录