点 six.add_metaclass 错误

Pip six.add_metaclass error

几天前,我在使用 pip(1,2 或 3)安装时开始出现以下错误。

*

Traceback (most recent call last):   File "/home/c4pta1n/.local/bin/pip", line 7, in <module>
    from pip._internal import main   File "/home/c4pta1n/.local/lib/python2.7/site-packages/pip/_internal/__init__.py", line 42, in <module>
    from pip._internal import cmdoptions   File "/home/c4pta1n/.local/lib/python2.7/site-packages/pip/_internal/cmdoptions.py", line 16, in <module>
    from pip._internal.index import (   File "/home/c4pta1n/.local/lib/python2.7/site-packages/pip/_internal/index.py", line 15, in <module>
    from pip._vendor import html5lib, requests, six   File "/home/c4pta1n/.local/lib/python2.7/site-packages/pip/_vendor/requests/__init__.py", line 86, in <module>
    from pip._vendor.urllib3.contrib import pyopenssl   File "/home/c4pta1n/.local/lib/python2.7/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py", line 46, in <module>
    import OpenSSL.SSL   File "/usr/local/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import rand, crypto, SSL   File "/usr/local/lib/python2.7/dist-packages/OpenSSL/crypto.py", line 13, in <module>
    from cryptography.hazmat.primitives.asymmetric import dsa, rsa   File "/usr/local/lib/python2.7/dist-packages/cryptography/hazmat/primitives/asymmetric/__init__.py", line 12, in <module>
    @six.add_metaclass(abc.ABCMeta) AttributeError: 'module' object has no attribute 'add_metaclass'

*

pip3 install pip --ignore-installed six
Traceback (most recent call last):
  File "/usr/local/bin/pip3", line 11, in <module>
    load_entry_point('pip==10.0.1', 'console_scripts', 'pip3')()
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 476, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2700, in load_entry_point
    return ep.load()
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2318, in load
    return self.resolve()
  File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2324, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/usr/local/lib/python2.7/dist-packages/pip/_internal/__init__.py", line 42, in <module>
    from pip._internal import cmdoptions
  File "/usr/local/lib/python2.7/dist-packages/pip/_internal/cmdoptions.py", line 16, in <module>
    from pip._internal.index import (
  File "/usr/local/lib/python2.7/dist-packages/pip/_internal/index.py", line 15, in <module>
    from pip._vendor import html5lib, requests, six
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/__init__.py", line 86, in <module>
    from pip._vendor.urllib3.contrib import pyopenssl
  File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/urllib3/contrib/pyopenssl.py", line 46, in <module>
    import OpenSSL.SSL
  File "/usr/local/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module>
    from OpenSSL import rand, crypto, SSL
  File "/usr/local/lib/python2.7/dist-packages/OpenSSL/crypto.py", line 13, in <module>
    from cryptography.hazmat.primitives.asymmetric import dsa, rsa
  File "/usr/local/lib/python2.7/dist-packages/cryptography/hazmat/primitives/asymmetric/__init__.py", line 12, in <module>
    @six.add_metaclass(abc.ABCMeta)
AttributeError: 'module' object has no attribute 'add_metaclass'

我一直在研究并尝试解决此问题,但未能缩小问题范围。 在注意到这个问题之前,我已经使用标准存储库更新了我的 debian 系统并且没有任何值得注意的问题,我还使用 pip3 install --update 更新了一些 pip 模块,我相信我更新的模块是 scapy 和 requests 我无法将 pip 用于我尝试过的任何命令,甚至 "pip list" 或任何版本的 pip 到 3.6。 我已经卸载并重新安装了 pip、virtualenv,并尝试从我的 distutils 文件夹中手动删除 six.add_metaclass-1.0* 文件夹。 我尝试过的任何事情都没有造成我能看到的任何变化,而且我无法缩小我看到的任何问题确实与这个特定问题相似或相关的范围。 我希望找到帮助来进一步缩小这个问题的范围,更正它或指出任何可以帮助我的信息的方向。

six 1.3.0 没有 add_metaclass。它于2013年发布。是时候升级了。

我找到了问题的答案。显然,一些 linux 版本具有特定版本的 pip 和六个必须直接通过发行包管理器安装才能工作。 Debian 使用 pip 的方式有一些细微的变化,特别是在更新方面,他们将这些变化编码到他们的包管理器中,而不是 pip。当我重新编译 Python 时,我卸载了整个 python 框架,然后我转到源代码 url 重新组合 python 并下载 pip 和任何其他依赖项。我想因为我是直接从源代码安装的,所以没问题……如果你使用的是 CentOS、Debian、Redhat 和其他软件,那么你必须从你的发行版管理的包管理器中安装 pip,以避免运行 在某处出现此错误。