Python sudopip列表:OpenSSL问题

Python sudopip列表:OpenSSL问题,python,python-2.7,pip,openssl,debian,Python,Python 2.7,Pip,Openssl,Debian,如果我尝试以下命令之一: sudopip列表 sudopip卸载 我总是会遇到这样的错误: /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

如果我尝试以下命令之一:

  • sudopip列表
  • sudopip卸载
我总是会遇到这样的错误:

/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
  File "/usr/local/lib/python2.7/dist-packages/pip/_internal/index/collector.py", line 12, in <module>
    from pip._vendor import html5lib, requests
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/__init__.py", line 97, in <module>
    from pip._vendor.urllib3.contrib import pyopenssl
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/urllib3/contrib/pyopenssl.py", line 48, in <module>
    from cryptography.hazmat.backends.openssl import backend as openssl_backend
  File "/usr/local/lib/python2.7/dist-packages/cryptography/hazmat/backends/openssl/__init__.py", line 7, in <module>
    from cryptography.hazmat.backends.openssl.backend import backend
  File "/usr/local/lib/python2.7/dist-packages/cryptography/hazmat/backends/openssl/backend.py", line 75, in <module>
    from cryptography.hazmat.bindings.openssl import binding
  File "/usr/local/lib/python2.7/dist-packages/cryptography/hazmat/bindings/openssl/binding.py", line 205, in <module>
    _verify_openssl_version(Binding.lib)
  File "/usr/local/lib/python2.7/dist-packages/cryptography/hazmat/bindings/openssl/binding.py", line 169, in _verify_openssl_version
    "You are linking against OpenSSL 1.0.1, which is no longer "
RuntimeError: You are linking against OpenSSL 1.0.1, which is no longer supported by the OpenSSL project. You need to upgrade to a newer version of OpenSSL.
/usr/local/lib/python2.7/dist-packages/cryptography/hazmat/primitives/constant\u-time.py:26:CryptographydeproductionWarning:不推荐支持Python版本。加密的下一个版本将取消支持。请尽快升级到支持hmac.compare_digest的版本(2.7.7+)。
utils.Persistently不推荐2018,
回溯(最近一次呼叫最后一次):
文件“/usr/local/bin/pip”,第9行,在
加载入口点('pip==20.0.2','console\u scripts','pip')()
文件“/usr/local/lib/python2.7/dist packages/pip/_internal/cli/main.py”,第73行,在main中
command=create_命令(cmd_name,isolated=(--isolated)在cmd_参数中)
文件“/usr/local/lib/python2.7/dist-packages/pip/_-internal/commands/_-init__.py”,第96行,在create_命令中
模块=导入lib.import\u模块(模块路径)
文件“/usr/lib/python2.7/importlib/_init_uuu.py”,第37行,在导入模块中
__导入(名称)
文件“/usr/local/lib/python2.7/dist packages/pip/_internal/commands/list.py”,第13行,在
从pip._internal.cli.req_命令导入IndexGroupCommand
文件“/usr/local/lib/python2.7/dist packages/pip/_internal/cli/req_command.py”,第15行,在
来自pip.\u internal.index.package\u finder导入PackageFinder
文件“/usr/local/lib/python2.7/dist packages/pip/_internal/index/package_finder.py”,第21行,在
从pip.\u internal.index.collector导入解析\u链接
文件“/usr/local/lib/python2.7/dist packages/pip/_internal/index/collector.py”,第12行,在
从pip.\u供应商导入html5lib,请求
文件“/usr/local/lib/python2.7/dist-packages/pip/_-vendor/requests/_-init__.py”,第97行,在
从pip._vendor.urlib3.contrib导入pyopenssl
文件“/usr/local/lib/python2.7/dist packages/pip/_vendor/urlib3/contrib/pyopenssl.py”,第48行,在
从cryptography.hazmat.backends.openssl导入后端作为openssl\u后端
文件“/usr/local/lib/python2.7/dist-packages/cryptography/hazmat/backends/openssl/__-init__;.py”,第7行,在
从cryptography.hazmat.backends.openssl.backend导入后端
文件“/usr/local/lib/python2.7/dist packages/cryptography/hazmat/backends/openssl/backend.py”,第75行,在
来自cryptography.hazmat.bindings.openssl导入绑定
文件“/usr/local/lib/python2.7/dist packages/cryptography/hazmat/bindings/openssl/binding.py”,第205行,在
_验证openssl版本(Binding.lib)
文件“/usr/local/lib/python2.7/dist packages/cryptography/hazmat/bindings/openssl/binding.py”,第169行,在openssl版本中
您正在链接到OpenSSL 1.0.1,它不再是
RuntimeError:您正在链接OpenSSL 1.0.1,OpenSSL项目不再支持它。您需要升级到更新版本的OpenSSL。
我知道错误很明显尚不清楚的是:

  • 为什么我不能列出我安装的软件包?OpenSSL错误。。。用pip列表?!OpenSSL与已安装软件包列表有什么关系?!我只想看看我的服务器上安装了什么
  • 为什么我不能卸载一个软件包?再说一次,OpenSSL和它有什么关系
  • 我有一台服务器与有此问题的服务器相同(Debian 7,相同的OpenSSL版本,相同的Python版本),但在另一台服务器上,任何东西都可以正常工作(甚至没有警告)
请阅读我的问题,不要只回答“升级您的OpenSSL”:-)

其他信息:

  • Python版本:Python 2.7.3
  • OpenSSL版本:OpenSSL 1.0.1e 2013年2月11日
  • 操作系统:Debian GNU/Linux 7
提前感谢:-)

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

pip
供应商
urlib3
,如果它出现在Python<2.7.9上。之所以这样做是因为Python<2.7.9不支持TLS;一个重要的现代特征
pyOpenSSL
反过来又依赖于
cryptography
,后者在版本2.9中放弃了1.0.1支持。因此,当您尝试在
pip
中执行任何操作时,它会触发导致此错误的导入序列

您在另一台几乎相同的服务器上看不到这个问题的(可能)原因是
加密
还提供了静态链接较新OpenSSL的二进制轮子。如果您使用的是pip 8.x或更高版本(您可能使用的是正常工作的服务器,而在损坏的服务器上可能而不是),它将获取一个与OpenSSL 1.1.1最新版本链接的控制盘(前提是您使用的是x86_64.i686控制盘在2.7中丢弃)

根据您看到的错误消息,几乎可以肯定您正在坏掉的服务器上运行加密2.9.x。那个版本的变通方法。因此,如果您使用
加密\u ALLOW\u OPENSSL\u 101=1 pip list
它应该可以工作

如果这样做有效,那么您应该立即升级
加密
。由于您现在在此服务器上运行的是pip 20.x,因此命令
CRYPTOGRAPHY\U ALLOW\U OPENSSL\U 101=1 pip install-U CRYPTOGRAPHY
应该从控制盘安装3.1版(假设您在x86\U 64上运行)

如果您在x86_64上运行而不是,那么您有两个选择(不涉及升级您的发行版,您应该升级,因为wheezy长期不受支持!):

  • 始终通过
    CRYPTOGRAPHY\u ALLOW\u OPENSSL\u 101
    并不再升级
    CRYPTOGRAPHY
    (2.9.2是秘密支持1.0.1的最新版本)
  • cryptography
    降级至2.8,并且不再升级
  • Python打包很“有趣”。让我们去冒险吧

    pip
    供应商
    urlib3
    ,如果它出现在Python<2.7.9上。之所以这样做是因为Python<2.7.9不支持TLS;一个重要的现代特征
    pyOpenSSL
    ,反过来又取决于
    密码