为了账号安全,请及时绑定邮箱和手机立即绑定

sudo pip list:OpenSSL 问题

sudo pip list:OpenSSL 问题

摇曳的蔷薇 2023-07-27 09:44:59
如果我尝试以下命令之一:sudo pip listsudo pip uninstall <something>我总是收到此错误:/usr/local/lib/python2.7/dist-packages/cryptography/hazmat/primitives/constant_time.py:26: CryptographyDeprecationWarning: Support for your Python version is deprecated. The next version of cryptography will remove support. Please upgrade to a release (2.7.7+) that supports hmac.compare_digest as soon as possible.  utils.PersistentlyDeprecated2018,Traceback (most recent call last):  File "/usr/local/bin/pip", line 9, in <module>    load_entry_point('pip==20.0.2', 'console_scripts', 'pip')()  File "/usr/local/lib/python2.7/dist-packages/pip/_internal/cli/main.py", line 73, in main    command = create_command(cmd_name, isolated=("--isolated" in cmd_args))  File "/usr/local/lib/python2.7/dist-packages/pip/_internal/commands/__init__.py", line 96, in create_command    module = importlib.import_module(module_path)  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module    __import__(name)  File "/usr/local/lib/python2.7/dist-packages/pip/_internal/commands/list.py", line 13, in <module>    from pip._internal.cli.req_command import IndexGroupCommand  File "/usr/local/lib/python2.7/dist-packages/pip/_internal/cli/req_command.py", line 15, in <module>    from pip._internal.index.package_finder import PackageFinder  File "/usr/local/lib/python2.7/dist-packages/pip/_internal/index/package_finder.py", line 21, in <module>    from pip._internal.index.collector import parse_links这个错误很明显,我知道!不清楚的是:为什么我不能只列出我已安装的软件包?OpenSSL 错误...带有 pip 列表?!OpenSSL 与已安装软件包列表有什么关系?!我只想看看我的服务器上安装了什么为什么我不能直接卸载软件包?再说一遍,OpenSSL 与它有什么关系?我有一个与出现此问题的服务器相同的服务器(Debian 7,相同的 OpenSSL 版本,相同的 Python 版本),但在另一台服务器上一切正常,没有问题(甚至没有警告)
查看完整描述

1 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

Python 打包很“有趣”。让我们去冒险吧!

pipvendors urllib3,如果 Python < 2.7.9 上存在pyOpenSSL,它会自动使用 pyOpenSSL 。这样做是因为 Python < 2.7.9 不支持TLS 中的SNI ;一个重要的现代特征。pyOpenSSL,反过来又依赖于cryptography,它在 2.9 版本中放弃了 1.0.1 支持。因此,当您尝试在其中执行任何操作时,pip都会触发导致此错误的导入序列。

您在另一台几乎相同的服务器上没有看到此问题的(可能)原因是该服务器cryptography还附带静态链接较新 OpenSSL 的二进制轮。如果您使用的是 pip 8.x 或更高版本(您可能位于正常工作的服务器上,并且可能不在损坏的服务器上),它将获取与 OpenSSL 1.1.1-latest 链接的轮子(前提是您使用的是x86_64。i686 轮子在 2.7 中被删除)。

鉴于您看到的错误消息,几乎可以肯定您正在损坏的服务器上运行加密 2.9.x。该版本支持环境变量解决方法。所以如果你CRYPTOGRAPHY_ALLOW_OPENSSL_101=1 pip list这样做的话应该会起作用。

如果有效,那么您应该立即升级cryptography。由于您现在在此服务器上运行 pip 20.x,因此该命令CRYPTOGRAPHY_ALLOW_OPENSSL_101=1 pip install -U cryptography应从轮子安装版本 3.1(假设您在 x86_64 上运行)。

如果您不是在 x86_64 上运行,那么您有两个选择(不涉及升级您的发行版,您应该这样做,因为 wheezy 早已不再支持!):

  1. 总是通过CRYPTOGRAPHY_ALLOW_OPENSSL_101并且不再升级cryptography(2.9.2是最后一个甚至秘密支持1.0.1的版本)

  2. 降级cryptography到2.8,也不再升级。


查看完整回答
反对 回复 2023-07-27
  • 1 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信