2016-06-30 20 views
5

Sto usando tox per gestire alcuni ambienti di test. Ho una dipendenza (backports.ssl-match-hostname) che non riesco a scaricare usando l'ultima versione di pip, quindi ho bisogno di tornare a pip 8.0.3 per consentire il funzionamento dell'installazione.Tox installa la versione errata di pip nel suo ambiente virtuale

Ho incluso la versione 8.0.3 di pip nel mio file tox.ini per le dipendenze.

deps= 
    pip==8.0.3 

Tuttavia, quando si esegue

source .tox/py27/bin/activate 

ed entro l'ambiente di testing virtuale e quindi eseguire

pip --version 

alla fine con

8.1.2 

Tuttavia, fuori del mio ambiente tossico, quando io eseguo lo stesso comando, ottengo

8.0.3 

C'è qualcosa di speciale che il tox fa quando afferra pip? Perché non riesco a specificare la versione di pip che voglio utilizzare come dipendenza?

EDIT: per aggiungere a questo, mi sembra di essere in grado di afferrare la dipendenza pip == 8.0.3, ma per le altre dipendenze, sono ancora in esecuzione dal comando lanciato con pip == 8.1.2

Quindi, devo essere in grado di afferrare pip == 8.0.3 prima, e poi una volta installato, prendi tutto il resto. Ancora incerto sul perché tox sta iniziando con pip == 8.1.2

risposta

3

Questo era apparentemente il risultato del pacchetto python "virtualenvs" contenente un gruppo pre-selezionato di pacchetti python a cui fa riferimento, uno dei quali era l'ultimo e il più grande pip.

Non so se questo è il modo migliore di fare questo, ma ho trovato il successo eseguendo

pip uninstall virtualenv 

e reinstallando con la versione che ha lavorato

pip install virtualenv==15.0.1 

Con il " corretto "versione di virtualenv sul posto, ero in grado di eseguire il mio comando tox

source .tox/py27/bin/activate 

e vedere il de Versione generò di pip

pip --version 
pip 8.0.3 
+1

Ho trovato che è importante disinstallare virtualenv esistente, perché pip è in bundle nel pacchetto virtualenv_support, che non viene aggiornato con l'aggiornamento di virtualenv –

1

Una soluzione per questo è qui: https://github.com/pypa/pip/issues/3666

Anche se per farlo funzionare ho dovuto scrivere "PIP installare == pip 8.1.1" nel mio script. Quindi, per ricapitolare:

aggiungere uno script pip.sh al progetto:

#!/bin/bash 
pip install pip==8.1.1 
pip install "[email protected]" 

Aggiungi alla tua tox.ini:

install_command = {toxinidir}/pip.sh {opts} {packages} 
0

Recentemente ho riscontrato questo problema. L'ho avuto per un po 'ma non è stato registrato perché ho avuto tali errori occasionali con il codice Python 2/3. Un altro modo in cui questo può accadere è, se come me, si cambia il virtualenv tra diverse versioni di Python e non si pulisce.

Controllare /bin o /Scripts per vedere se punti a python. Se virtualenv è Python 3, ciò significa che python2 chiama effettivamente Python 3. Viceversa, ovviamente, se il virtualenv è Python 2 e si desidera testare il codice Python 3.

+0

Grazie per la risposta. Onestamente non lo ricordavo, è passato così tanto tempo. – Zack

Problemi correlati