使用"pip install --upgrade"升级pip和scrapy后出现了pip错误

4
使用Debian 8(Jessie)amd64和Python 2.7.9。我尝试了以下命令:
pip install --upgrade pip

pip install --upgrade scrapy

之后,我遇到了以下pip错误:
root@debian:~# pip
Traceback (most recent call last):
File "/usr/local/bin/pip", line 11, in <module>
load_entry_point('pip==8.1.2', 'console_scripts', 'pip')()
File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 567, 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 2604, in load_entry_point
return ep.load()
File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2264, in load
return self.resolve()
File "/usr/local/lib/python2.7/dist-packages/pkg_resources/__init__.py", line 2270, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/usr/local/lib/python2.7/dist-packages/pip/__init__.py", line 16, in <module>
from pip.vcs import git, mercurial, subversion, bazaar  # noqa
File "/usr/local/lib/python2.7/dist-packages/pip/vcs/mercurial.py", line 9, in <module>
from pip.download import path_to_url
File "/usr/local/lib/python2.7/dist-packages/pip/download.py", line 39, in <module>
from pip._vendor import requests, six
File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/__init__.py", line 53, in <module>
from .packages.urllib3.contrib import pyopenssl
File "/usr/local/lib/python2.7/dist-packages/pip/_vendor/requests/packages/urllib3/contrib/pyopenssl.py", line 54, in <module>
import OpenSSL.SSL
File "/usr/lib/python2.7/dist-packages/OpenSSL/__init__.py", line 8, in <module>
from OpenSSL import rand, crypto, SSL
File "/usr/lib/python2.7/dist-packages/OpenSSL/rand.py", line 11, in <module>
from OpenSSL._util import (
File "/usr/lib/python2.7/dist-packages/OpenSSL/_util.py", line 4, in <module>
binding = Binding()
File "/usr/lib/python2.7/dist-packages/cryptography/hazmat/bindings/openssl/binding.py", line 89, in __init__
self._ensure_ffi_initialized()
File "/usr/lib/python2.7/dist-packages/cryptography/hazmat/bindings/openssl/binding.py", line 113, in _ensure_ffi_initialized
libraries=libraries,
File "/usr/lib/python2.7/dist-packages/cryptography/hazmat/bindings/utils.py", line 80, in build_ffi
extra_link_args=extra_link_args,
File "/usr/local/lib/python2.7/dist-packages/cffi/api.py", line 437, in verify
lib = self.verifier.load_library()
File "/usr/local/lib/python2.7/dist-packages/cffi/verifier.py", line 114, in load_library
return self._load_library()
File "/usr/local/lib/python2.7/dist-packages/cffi/verifier.py", line 225, in _load_library
return self._vengine.load_library()
File "/usr/local/lib/python2.7/dist-packages/cffi/vengine_cpy.py", line 174, in load_library
lst = list(map(self.ffi._get_cached_btype, lst))
File "/usr/local/lib/python2.7/dist-packages/cffi/api.py", line 409, in _get_cached_btype
BType = type.get_cached_btype(self, finishlist)
File "/usr/local/lib/python2.7/dist-packages/cffi/model.py", line 61, in get_cached_btype
BType = self.build_backend_type(ffi, finishlist)
File "/usr/local/lib/python2.7/dist-packages/cffi/model.py", line 507, in build_backend_type
base_btype = self.build_baseinttype(ffi, finishlist)
File "/usr/local/lib/python2.7/dist-packages/cffi/model.py", line 525, in build_baseinttype
% self._get_c_name())
cffi.api.CDefError: 'point_conversion_form_t' has no values explicitly defined: refusing to guess which integer type it is meant to be (unsigned/signed, int/long)

我在谷歌上搜索了几个类似的问题,发现可能是cffi或cryptography引起了这个问题,但我找不到任何明确的解决方法。

5个回答

2
今天我遇到了完全相同的错误,但是在不同的情况下。 我怀疑这与模块有关。帮助我的是安装软件包的特定版本:
pip install cffi==1.7.0 

1
我无法安装它,因为我甚至无法运行pip命令而不出现错误。有什么解决办法吗? - moeseth
我强制从site-packages中删除了cffi,并从pip安装了1.7.0版本。现在它可以正常工作了。 - moeseth

1

我卸载了cffi并尝试使用以下命令安装cffi 1.7.0:

pip install cffi==1.7.0

它起作用了,谢谢alecxe和moeseth :)

0

我的情况就像 @alecxe 一样

这个可以工作:

pip install cffi==1.7.0

0

我遇到了一个问题,pip 失败了。我不得不卸载 python-cffi ,然后用正确的版本从 pip 安装。

sudo apt-get remove python-cffi
pip install cffi==1.7.0

非常好用。


0

我遇到了和moeseth一样的问题:当所有pip命令都抛出原始异常时,pip install something的答案几乎没有用处。安装cffi v. 1.7.0也解决了这个问题,以下是我在Debian Jessie上如何处理而不依赖于pip:

临时将测试存储库添加到/etc/apt/sources.list,例如:
deb http://ftp.fi.debian.org/debian/ testing main contrib non-free
deb-src http://ftp.fi.debian.org/debian/ testing main contrib non-free

运行sudo apt-get update 使用aptitude或apt-get升级python-cffipython-cffi-backend到v.1.7.0
/etc/apt/sources.list中删除步骤1中添加的行,并运行sudo apt-get update

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接