2016-02-07 11 views
10

Właśnie zainstalowałem/zaktualizowałem następujące pakiety w moim systemie (Mac OSX 10.7.5, używając Pythona 2.7.11).Dlaczego Conda i Pip przestały działać? Obiekt "CompiledFFI" nie ma atrybutu "def_extern"

package    |   build 
---------------------------|----------------- 
enum34-1.1.2    |   py27_0   55 KB 
idna-2.0     |   py27_0   123 KB 
ipaddress-1.0.14   |   py27_0   27 KB 
pyasn1-0.1.9    |   py27_0   54 KB 
pycparser-2.14    |   py27_0   147 KB 
cffi-1.2.1     |   py27_0   167 KB 
cryptography-1.0.2   |   py27_0   370 KB 
pyopenssl-0.14    |   py27_0   122 KB 
ndg-httpsclient-0.3.3  |   py27_0   30 KB 
------------------------------------------------------------ 
             Total:   1.1 MB 

Następnie, pojawia się następujący komunikat o błędzie podczas próby wywołania PIP lub anakondy:

'CompiledFFI' object has no attribute 'def_extern' 

co się dzieje i jak to naprawić?

Oto pełny komunikat o błędzie:

$ conda 
Traceback (most recent call last): 
    File "/Users/User/miniconda/bin/conda", line 5, in <module> 
    sys.exit(main()) 
    File "/Users/User/miniconda/lib/python2.7/site-packages/conda/cli/main.py", line 118, in main 
    from conda.cli import main_search 
    File "/Users/User/miniconda/lib/python2.7/site-packages/conda/cli/main_search.py", line 12, in <module> 
    from conda.misc import make_icon_url 
    File "/Users/User/miniconda/lib/python2.7/site-packages/conda/misc.py", line 19, in <module> 
    from conda.api import get_index 
    File "/Users/User/miniconda/lib/python2.7/site-packages/conda/api.py", line 10, in <module> 
    from conda.fetch import fetch_index 
    File "/Users/User/miniconda/lib/python2.7/site-packages/conda/fetch.py", line 24, in <module> 
    from conda.connection import CondaSession, unparse_url, RETRIES 
    File "/Users/User/miniconda/lib/python2.7/site-packages/conda/connection.py", line 24, in <module> 
    import requests 
    File "/Users/User/miniconda/lib/python2.7/site-packages/requests/__init__.py", line 53, in <module> 
    from .packages.urllib3.contrib import pyopenssl 
    File "/Users/User/miniconda/lib/python2.7/site-packages/requests/packages/urllib3/contrib/pyopenssl.py", line 54, in <module> 
    import OpenSSL.SSL 
    File "/Users/User/miniconda/lib/python2.7/site-packages/OpenSSL/__init__.py", line 8, in <module> 
    from OpenSSL import rand, crypto, SSL 
    File "/Users/User/miniconda/lib/python2.7/site-packages/OpenSSL/rand.py", line 11, in <module> 
    from OpenSSL._util import (
    File "/Users/User/miniconda/lib/python2.7/site-packages/OpenSSL/_util.py", line 6, in <module> 
    from cryptography.hazmat.bindings.openssl.binding import Binding 
    File "/Users/User/miniconda/lib/python2.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 68, in <module> 
    error=-1) 
    File "/Users/User/miniconda/lib/python2.7/site-packages/cryptography/hazmat/bindings/openssl/binding.py", line 57, in wrapper 
    ffi.def_extern(name=name, **kwargs)(func) 
AttributeError: 'CompiledFFI' object has no attribute 'def_extern' 
+3

Usuwanie folderów kryptografii wydawały napraw ten problem, ale nie jestem pewien dlaczego. – spacetyper

+0

Udało mi się naprawić wszystkie problemy, które miałem, usuwając mój folder miniconda, a następnie ponownie pobrać. Nie odpowiada to jednak na pytanie, co poszło źle. – spacetyper

Odpowiedz

14

miałem ten błąd też, ale już rozwiązane poprzez modernizację cffi tak:

pip install --upgrade cffi 
+7

Jak to jest, użyj pip, jeśli OP mówi, że jest zepsuty. –

12

Aktualizacja cffi nie rozwiązuje to dla mnie ; Zrobiłem:

sudo apt-get purge --auto-remove python-cryptography 

a następnie ponownie zainstalowałem kryptografię.

+0

To działa, ale z oczyszczaniem, są usuwane pakiety (przynajmniej dla mnie): python-kryptografiiComment python-NDG-httpsclient python-openssl Przypuszczam, że są one potrzebne, aby zostać ponownie zainstalowane zbyt. – MouTio

10

rozwiązać problem z tym rozwiązaniem

easy_install -U cffi 

https://bugs.launchpad.net/ubuntu/+source/python-pip/+bug/1512792/comments/11

+0

To właśnie dla mnie zadziałało. Miałem mieszankę pakietów Pythona dla homebrew i OS X, a 'pip' ciągle się zawiesza. – duma

+0

Po aktualizacji systemu Ubuntu znalazłem PIP również zrywa z tym samym błędem. Aktualizacja z easy_install wydawała się rozwiązywać wszystkie błędy. Dzięki. – user650881

3

mam odpowiedzi na pytanie tak późno, jak wszystkie z powyższych odpowiedzi nie działa mi.

Przyczyna: Prawdopodobną przyczyną była wersja pakietu cffi, tj. 1.2.1 (w moim przypadku 1.3.0).

Rozwiązanie: Pakiet aktualizacji cffi. Ale to nie jest takie proste, ponieważ prawdopodobnie zepsułoby to również twoje pip.

najpierw odinstalować pip (dla CentOS 7):

yum remove -y python-pip 

Po wyjęciu, teraz usunąć pakiet cffi ręcznie:

aby uzyskać dokładną ścieżkę:

$ python 

>>> import cffi 
>>> cffi.__path__ 
['/usr/lib64/python2.7/site-packages/cffi'] 

Teraz przejdź do katalog: cd /usr/lib64/python2.7/site-packages - aby sprawdzić, jakie pliki i foldery cffi są dostępne:

ls | grep cffi 
cffi 
cffi-1.3.0-py2.7.egg-info 
_cffi_backend.so 

Wyjąć cffi odpowiednie pliki i foldery:

rm -rf cffi cffi-1.3.0-py2.7.egg-info/ _cffi_backend.so 

Ponowne zainstalowanie pip:

yum install -y python-pip 

Instalowanie najnowszego pakietu cffi:

pip install cffi==1.8.2 
+1

Kluczowym punktem, który pomógł mi (na ubuntu 14) było usunięcie starych kopii cffi, które zakłócały moje narzędzia. Po prostu zainstalowanie nowej wersji cffi nic dla mnie nie zmieniło. – killthrush

Powiązane problemy