宝塔面板搭建python遇到AttributeError: module ‘hashlib‘ has no attribute ‘scrypt‘ 失败方案-

节前提示 本文没有实际解决问题,有其他大佬解决了可以给我说一下, 我换了一种方式 没有继续使用hashlib了

⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️⬆️

写功能的时候使用了一个

from werkzeug.security import generate_password_hash, check_password_hash

check_password_hash(admin.password, password)

检查密码是否匹配
然后遇到报错

  File "/www/python/xpp/admin/api_admin.py", line 52, in login_admin
    msg = func_admin.login_admin(name, password)
  File "/www/python/xpp/admin/func_admin.py", line 42, in login_admin
    if admin and check_password_hash(admin.password, password) and admin.state == 1:
  File "/www/python/xpp/de30f4ed64a614089b1ecb0a6f039ac3_venv/lib/python3.9/site-packages/werkzeug/security.py", line 124, in check_password_hash
    return hmac.compare_digest(_hash_internal(method, salt, password)[0], hashval)
  File "/www/python/xpp/de30f4ed64a614089b1ecb0a6f039ac3_venv/lib/python3.9/site-packages/werkzeug/security.py", line 43, in _hash_internal
    hashlib.scrypt(password, salt=salt, n=n, r=r, p=p, maxmem=maxmem).hex(),
AttributeError: module 'hashlib' has no attribute 'scrypt'

环境是
在这里插入图片描述

检查后发现openssl版本为OpenSSL 1.0.2k-fips 26 Jan 2017

有点低了

升级方案:

在 CentOS 7 上升级 OpenSSL 到更高版本(如 1.1.0 或以上)可能比较复杂,因为默认的 Yum 仓库中可能不包含这个版本。以下是手动升级 OpenSSL 的基本步骤:

1. 下载 OpenSSL 源码

首先,您需要从 OpenSSL 的官方网站下载所需版本的源代码。可以通过以下命令下载:

cd /usr/local/src
sudo wget https://www.openssl.org/source/openssl-1.1.1.tar.gz

这里以 OpenSSL 1.1.1 版本为例。请根据需要选择合适的版本。

2. 解压源码

下载完成后,解压源码:

sudo tar -zxf openssl-1.1.1.tar.gz

3. 编译和安装

接着,编译并安装 OpenSSL:

cd openssl-1.1.1
sudo ./config --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib
sudo make
sudo make install

4. 配置系统使用新的 OpenSSL 版本

编译安装完成后,您需要配置系统使用新版本的 OpenSSL。首先,备份旧版本的 OpenSSL:

sudo mv /bin/openssl /bin/openssl.bak
sudo mv /usr/bin/openssl /usr/bin/openssl.bak

然后,创建新的 OpenSSL 链接:

sudo ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
sudo ln -s /usr/local/ssl/bin/openssl /bin/openssl

5. 更新系统库路径

为了让系统识别新安装的库,您需要更新系统的库路径:

编辑 /etc/ld.so.conf 文件,添加新的 OpenSSL 库路径:

sudo echo "/usr/local/ssl/lib" >> /etc/ld.so.conf

然后更新动态链接库:

sudo ldconfig -v

6. 验证新的 OpenSSL 安装

最后,验证新安装的 OpenSSL 版本:

openssl version

注意事项

  • 这些步骤涉及重要的系统更改,可能会对您的系统和其他依赖于 OpenSSL 的应用产生影响。请确保您了解这些更改的后果,并在更改之前进行适当的备份。
  • 如果您不熟悉这些过程,强烈建议在进行更改之前寻求专业的技术支持或咨询经验丰富的系统管理员。
  • 在一些场景中,升级操作系统到最新版本可能是更安全和更有效的解决方案,因为新版操作系统通常会包含更新的 OpenSSL 版本。

升级完成
在这里插入图片描述

重启服务器, 验证

在这里插入图片描述
问题依旧,猜测是 宝塔面板的openssl 和 python 管理器里的虚拟环境的版本 不相通

。。。

继续折腾虚拟环境的openssl

结局

没搞出来。。 有没有大牛?

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈钇谷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值