Impossibile trovare una versione che soddisfi il requisito <pacchetto>


139

Sto installando diversi pacchetti Python in Ubuntu 12.04 usando il seguente requirements.txtfile:

numpy>=1.8.2,<2.0.0
matplotlib>=1.3.1,<2.0.0
scipy>=0.14.0,<1.0.0
astroML>=0.2,<1.0
scikit-learn>=0.14.1,<1.0.0
rpy2>=2.4.3,<3.0.0

e questi due comandi:

$ pip install --download=/tmp -r requirements.txt
$ pip install --user --no-index --find-links=/tmp -r requirements.txt

(il primo scarica i pacchetti e il secondo li installa).

Il processo viene spesso arrestato con l'errore:

  Could not find a version that satisfies the requirement <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2)) (from versions: )
No matching distribution found for <package> (from matplotlib<2.0.0,>=1.3.1->-r requirements.txt (line 2))

che aggiorno manualmente con:

pip install --user <package>

e quindi eseguire pip installnuovamente il secondo comando.

Ma questo funziona solo per quel particolare pacchetto. Quando pip installeseguo di nuovo il secondo comando, il processo viene arrestato ora lamentando un altro pacchetto richiesto e devo ripetere nuovamente il processo, ovvero: installare manualmente il nuovo pacchetto richiesto (con il comando sopra) e quindi eseguire il secondo pip installcomando.

Finora ho dovuto installare manualmente six, pytz, nose, e ora è lamentarsi bisogno mock.

C'è un modo per dire pipdi installare automaticamente tutte le dipendenze necessarie quindi non devo farlo manualmente uno per uno?

Aggiungi : questo succede solo in Ubuntu 12.04 BTW. In Ubuntu 14.04 i pip installcomandi applicati al requirements.txtfile funzionano senza problemi.


1
A volte il tuo progetto Django può dipendere da pacchetti di birra locali. Controlla di averli installati!
James111,

ho avuto lo stesso problema, con 'python -m pip install flask' sono stato in grado di installarlo
Freelancer

Risposte:


47

Questo approccio (avendo tutte le dipendenze in una directory e non scaricando da un indice) funziona solo quando la directory contiene tutti i pacchetti. La directory dovrebbe quindi contenere tutte le dipendenze ma anche tutti i pacchetti da cui dipendono tali dipendenze (ad es. six, pytzEcc.).

Pertanto, è necessario includerli manualmente in requirements.txt(in modo che il primo passaggio li scarichi esplicitamente) oppure installare tutti i pacchetti utilizzando PyPI e quindi pip freeze > requirements.txtmemorizzare l'elenco di tutti i pacchetti necessari.


Quindi l'unico modo per scoprire quali sono tutti i requisiti è per freezei pacchetti installati in una configurazione funzionante e quindi aggiungere tutto lì al requirements.txtfile?
Gabriel,

2
@Gabriel: attualmente sì, come molti pacchetti Python sono installati eseguendo un setup.pyfile che contiene le dipendenze di cui hanno bisogno. Ciò dovrebbe migliorare una volta che il pacchetto Python è diventato file wheel ( pythonwheels.com ) che consente di raccogliere un elenco di tutti i pacchetti necessari senza eseguire codice arbitrario nei setup.pyfile.
Simeon Visser,

1
Grazie per la spiegazione Simeon. Un'altra cosa se non ti dispiace: perché questo non accade in Ubuntu 14.04 ma succede in Ubuntu 12.04?
Gabriel,

4
@Gabriel: non sono sicuro - nella mia esperienza pipsi interrompe sempre quando non riesce a trovare un pacchetto da installare. Detto questo, pipviene sviluppato attivamente, quindi potresti avere una versione con cui non ho lavorato.
Simeon Visser,

@SimeonVisser, "[ruote] ti permettono di raccogliere un elenco di tutti i pacchetti necessari senza eseguire codice arbitrario", interessante, condividendo la mente su come farlo (ormai)?
sschuberth

39

Avevo installato python3 ma il mio python in / usr / bin / python era ancora la vecchia versione 2.7

Questo ha funzionato ( <pkg>era pyserialnel mio caso):

python3 -m pip install <pkg>

1
questo accade quando in setuptools c'è un python_requires='>=3.0'requisito
Juan-Kabbali

11

Dopo 2 ore di ricerca, ho trovato un modo per risolverlo con una sola riga di comando. Devi conoscere la versione del pacchetto (basta cercare la versione del PACCHETTO).

Comando:

python3 -m pip install --pre --upgrade PACKAGE==VERSION.VERSION.VERSION


4

Prova a installare il pallone tramite PowerShell usando il comando seguente.

pip install --isolated Flask

Ciò consentirà all'installazione di evitare le variabili di ambiente e la configurazione dell'utente.


3

Non sempre, ma in alcuni casi il pacchetto esiste già. Ad esempio - getpass. Non è elencato per "elenco pip" ma può essere importato e utilizzato:

inserisci qui la descrizione dell'immagine

Se provo a installare pip getpass ottengo il seguente errore: "Impossibile trovare una versione che soddisfi il requisito getpass"


1

Ho riscontrato questo errore durante l'installazione awsclisu Windows 10 in anaconda (python 3.7). Durante la risoluzione dei problemi, sono andato alla risposta https://stackoverflow.com/a/49991357/6862405 e quindi a https://stackoverflow.com/a/54582701/6862405 . Finalmente trovato che ho bisogno di installare le librerie PyOpenSSL, cryptography, enum34, idnae ipaddress. Dopo aver installato questi (usando semplicemente il pip installcomando), sono stato in grado di installare awscli.


1

Se stai affrontando questo problema sul posto di lavoro. Questa potrebbe essere la soluzione per te.

pip install -U <package_name> --user --proxy=<your proxy>


-6

Utilizzare il prompt dei comandi, quindi selezionare Esegui come amministratore.

Aggiorna la versione pip

Per aggiornare PIP, digitare questo comando, quindi premere Invio: -

python.exe -m pip install - aggiorna pip

Torna al percorso Python C: \ Users \ Jack \ AppData \ Local \ Programmi \ Python \ Python37 \ Scripts

Digitare jupyter notebook

Verrai reindirizzato a http: // localhost: 8888 / undefined / tree - Home page di Jupyter

Spero che sia d'aiuto !!!!!!!!!!!


2
Cosa c'entra Giove con questo ??
Bzazz,

come può l'aggiornamento pip risolvere le dipendenze? Richiede dipendenze nella directory chiamante.
Rizwan Javid,

-7

potrebbe aiutare

sudo pip install wheel == 0.29.0


4
Spiacenti. Non leggo il cinese o altre lingue asiatiche. Il link di riferimento potrebbe interrompersi in futuro ... pubblica qui gli elementi essenziali. Come pubblicato la sua risposta di bassa qualità senza contesto.
ZF007,

1
Il link di riferimento è in giapponese ... considera la condivisione dei link in inglese
javidazac,

6
Il codice è comprensibile per tutti gli sviluppatori e la quantità di giapponese è sia minima che poco più dei titoli che introducono il seguente codice (traducilo se è troppo impegnativo per te ma non hai davvero bisogno di farlo per capire cosa sta succedendo). Non dovrebbero esserci problemi con lingue diverse dall'inglese, purché gli esempi di codice siano chiari e non completamente dipendenti dalla lingua straniera utilizzata.
rg88

6
@ rg88 Va bene per un commento (forse con un avvertimento) ma una risposta su Stack Overflow dovrebbe essere autonoma e convincente.
Tripleee
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.