2013-01-12 14 views
68

Mi sembra di aver improvvisamente iniziato a riscontrare l'errore error: option --single-version-externally-managed not recognized quando pip install in pacchetti varions (incluso PyObjC e astropy). Non ho mai visto questo errore prima, ma ora si sta rivelando anche su build travis-ci per i quali nulla è cambiato.Cosa indica "errore: opzione --single-versione-gestita esternamente non riconosciuta"?

Questo errore indica una distribuzione scaduta? O qualche opzione erroneamente specificata in setup.py? O qualcos'altro interamente?

risposta

31

Nuovo aggiornamento:

installare l'ultima versione di setuptools. Se ricevi ancora l'errore, installa anche wheel.

pip install -U setuptools 
pip install -U wheel 

originali risposte/Più dettagli:

--single-version-externally-managed è un'opzione utilizzata per i pacchetti Python istruire il modulo setuptools per creare un pacchetto di Python che può essere facilmente gestito dal gestore di pacchetti del padrone di casa, se necessario, come Yum o Apt.

Se visualizzi questo messaggio, potresti avere una vecchia versione di setuptools o Python. Prova a usare Distribute, che è una versione più recente di setuptools ed è retrocompatibile. Questi pacchetti potrebbero aspettarsi di averlo già.

https://pypi.python.org/pypi/distribute

Edit: A questo punto, distribuire è stato fuso con il progetto principale setuptools. Basta installare l'ultima versione di setuptools. Come indicato da @wynemo, potrebbe essere preferibile utilizzare l'opzione --egg poiché è più appropriato per coloro che eseguono installazioni manuali in cui non si intende creare un pacchetto di sistema per la distribuzione.

+1

È possibile aggiungere la versione visualizzata? Sto usando setuptools 0.6 e pip non sa di una versione più recente. 'distribute' sembra corretto, ma non riesco a importarlo ... – keflavich

+0

Non devi importare distribuire. La distribuzione è una sostituzione drop-in e ha lo stesso nome del modulo. Anche 'import setuptools' è necessario per questo. – Kelketek

+0

La cosa da fare, quindi, è assicurarsi che setuptools non sovrascruisca la distribuzione, se entrambi sono installati. È necessario installare distribuire con pip e quindi rimuovere setuptools. Immagino che dovrebbe funzionare. – Kelketek

132

Aggiungere --egg opzione

pip install --egg SCons 

utilizzare pip versione 1.4.1

+9

Questa è stata l'unica soluzione che ha effettivamente aiutato. I pip e setuptools recenti sono già stati installati, tuttavia questo errore. – Michael

+0

Ho avuto questo problema con pyenv e questo l'ha risolto. – glaucon

+9

Qualcuno può spiegare in dettaglio cosa significa questa opzione e perché funziona? –

0

ho questo problema sul mio macbook anche quando cerco di aggiornare un pacchetto python. Controllo la versione pip in OS X, è troppo vecchia: 1.1. Io uso cmd seguire per aggiornare pip al 1.5.6

easy_install -U pip 

Poi questo errore è fisso.

+0

Ottengo questo errore anche con la versione 1.5.6 ... – Cerin

6

setuptools provare ad aggiornare come questo:

pip install --upgrade setuptools

37

Installazione wheel risolto questo problema con la recente pip (ho usato 8.1.2):

pip install wheel 
+0

È possibile ripristinare se si desidera modificare, nessun problema. Se si conosce la versione esatta di 'pip' e' wheel' in cui è stata riparata, potrebbe essere utile menzionarla nel caso in cui venga interrotta di nuovo. E inoltre, la risposta non spiega cosa sta succedendo comunque. –

+1

Questo ha funzionato anche per me (anch'io ho pip 8.1.2). –

+0

Questa risposta positiva di @sparrowt ha risolto il problema –

3

ho avuto questo problema. Si è scoperto che si trattava di un problema con i permessi dei file sulla mia cache di pip.

Se viene visualizzato un messaggio proprio all'inizio della vostra uscita pip come

The directory '/home/ubuntu/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. 
The directory '/home/ubuntu/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag. 

si potrebbe avere lo stesso problema. Puoi risolverlo assicurandoti di avere i permessi file appropriati sulla tua cache pip (qualcosa come chown -R $(whoami) /home/ubuntu/.cache/pip) o, se sei su UNIX, puoi impostare la posizione della cache pip con l'env var XDG_CACHE_HOME in una cartella che possiedi .

+0

Sorprendentemente, ha funzionato anche per me (se si utilizza 'sudo' per installare il pacchetto, assicurarsi di aggiungere il flag' -H') ! Davvero non vedo quale sia la connessione tra la cache e l'errore dell'opzione di comando, ma non importa. – Delgan

Problemi correlati