2016-02-07 16 views
10

Ho appena installato/aggiornato i seguenti pacchetti sul mio sistema (Mac OSX 10.7.5, usando python 2.7.11).Perché conda e pip hanno smesso di funzionare? L'oggetto 'CompiledFFI' non ha attributo '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 

In seguito, ottengo il seguente errore quando si cerca di chiamare pip o anaconda:

'CompiledFFI' object has no attribute 'def_extern' 

cosa sta succedendo e come posso risolvere questo problema?

Ecco il messaggio di errore completo:

$ 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

Cancellare le cartelle crittografia sembravano a risolvere questo problema, ma non sono sicuro del perché. – spacetyper

+0

Sono riuscito a risolvere tutti i problemi che stavo avendo eliminando la mia cartella miniconda, e quindi riscaricando. Questo non risponde alla domanda di cosa è andato storto però. – spacetyper

risposta

14

ho avuto questo errore troppo, ma ho risolto che con l'aggiornamento CFFI in questo modo:

pip install --upgrade cffi 
+7

Come mai si usa pip, se OP dice che è rotto. –

12

Aggiornamento CFFI non ha risolto per me ; Ho fatto:

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

e quindi reinstallare la crittografia.

+0

che funziona, ma con l'epurazione, questi sono i pacchetti rimossi (almeno per me): python-crittografia python-NDG-httpsclient python-openssl suppongo che sono necessari per essere reinstallato troppo. – MouTio

10

ho risolvere il problema con questa soluzione

easy_install -U cffi 

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

+0

Questo è ciò che ha funzionato per me. Ho avuto un mix di installazioni di pacchetti python homebrew e OS X-homed e 'pip' continuava a bloccarsi. – duma

+0

Dopo un aggiornamento del sistema di Ubuntu ho scoperto che anche pip si stava rompendo con lo stesso errore. L'aggiornamento con easy_install sembrava risolvere tutti gli errori. Grazie. – user650881

3

sto rispondendo alla domanda a questo ritardo, come tutte le risposte di cui sopra non mi ha funzionato.

Causa: la causa probabile era la versione del pacchetto cffi 1.2.1 (nel mio caso 1.3.0).

Soluzione: aggiornamento pacchetto cffi. Ma non è così semplice come probabilmente avrebbe rotto anche il tuo pip.

Prima pip di disinstallazione (per CentOS 7):

yum remove -y python-pip 

Una volta rimosso, ora eliminare il pacchetto CFFI manualmente:

per ottenere il percorso esatto:

$ python 

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

Ora vai la directory: cd /usr/lib64/python2.7/site-packages - per controllare quali file e cartelle cffi ci sono:

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

Rimuovere i file relativi CFFI e cartelle:

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

Re-installazione di pip:

yum install -y python-pip 

Installazione l'ultimo pacchetto CFFI:

pip install cffi==1.8.2 
+1

Il punto chiave che mi ha aiutato (su ubuntu 14) è stato rimuovere tutte le vecchie copie di cffi che interferivano con i miei strumenti. La semplice installazione di una nuova versione di cffi non ha fatto nulla per me. – killthrush