2016-05-18 12 views
11

ho scritto un pacchetto con dipendenze di una dipendenza psutil (my-package dipende third-party-package che dipende psutil).
Poiché deve essere eseguito su un server senza alcuna connettività e senza gcc, ho preparato la distribuzione localmente con un psutilpython platform wheel e pip install my-package --download, quindi inviato tutto sul server.Problemi durante l'installazione psutil (ruota) come dipendenza tramite pip

Ora tutto è pronto sul server, ma per qualche motivo, quando eseguo l'installazione, pip si rifiuta di installare psutil. Si noti che il server è un red hat 7.2 che utilizza pip 7.1.0, virtualenv 1.10.1 e python 2.7.5 (e non posso cambiare la versione di qualsiasi cosa).

$ pip install /tmp/python_packages/my-package-1.4.zip --no-index 
    --find-links /tmp/python_packages/ --use-wheel 
Ignoring indexes: https://pypi.python.org/simple/ 

# blablabla, everything goes fine, then 

Downloading/unpacking psutil (from third-party-package>=0.9->my-package==1.4) 
    Could not find any downloads that satisfy the requirement psutil 
    (from third-party-package>=0.9->my-package==1.4) 
Cleaning up... 
No distributions at all found for psutil (from third-party-package>=0.9->my-package==1.4) 
Storing complete log in /home/anto/.pip/pip.log 

Ecco cosa pip.log dice:

Downloading/unpacking psutil (from third-party-package>=0.9->my-package==1.4) 

    URLs to search for versions for psutil (from third-party-package>=0.9->my-package==1.4): 
    # bla 
    Skipping file:///tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl 
    because it is not compatible with this Python 
    # bla 
    Could not find any downloads that satisfy the requirement psutil (from third- 
    party-package>=0.9->my-package==1.4) 

Cleaning up... 

Quindi "non è compatibile con questo Python", ok. Ma ecco la parte davvero strana: se installo psutil senza altro, e poi il resto, tutto va bene.

$ pip install /tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl 
Unpacking /tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl 
Installing collected packages: psutil 
Successfully installed psutil 
Cleaning up... 
$ pip freeze -l 
psutil==4.2.0 
$ pip install /tmp/python_packages/my-package-1.4.zip --no-index 
    --find-links /tmp/python_packages/ --use-wheel 

# blablabla 

Successfully installed my-package third-party-package 
Cleaning up... 

Cosa mi manca? Qualche indizio?

+0

qual è il pacchetto di terze parti? – second

+0

È un pacchetto sviluppato da qualcuno all'interno della mia azienda. Setup.py contiene 'install_requires = ['psutil']'; nulla di bello. – Anto

+0

Non sei sicuro di avere più versioni python, ma nel file pip.log verificare che in entrambi i casi il python utilizzato sia la versione corretta? (http://stackoverflow.com/questions/29879504/python-version-incorrectly-identified) Non è convinto che questo sia il tuo problema, ma è un inizio. In un'altra nota, perché sei ancora in 2.7.5? l'ultimo è il 2.7.11. –

risposta

0

Dalla tua risposta, sembra che tu abbia funzionato con il passaggio extra.

Quando si esegue un'installazione offline, è necessario indicare dove trovare tutti i pacchetti che si desidera installare in modo esplicito, non solo il livello principale.

Personalmente sono sempre stato esplicito sul fatto che si sta cercando nel file e, come qualsiasi altra installazione di pip, è possibile specificare più installazioni sulla stessa linea per il contesto.

$ pip install --no-index --find-links file:/tmp/python_packages/ --use-wheel psutil my-package-1.4.zip 
+0

Non penso che questo sia il motivo perché pip trova la ruota; si rifiuta semplicemente di installarlo per un motivo che non suona legittimo (versione python);) – Anto

+0

Questo ha più a che fare con la versione pip/ven/setuptools della versione di Python IMHO. @Anto: qual è la versione di questi strumenti che usi? E per il gusto di ciò che distro/versione di Linux? –

+0

Qual è l'output di pip -version? –

1

La questione chiave che si trovano ad affrontare è IMHO questo:

Skipping file:///tmp/python_packages/psutil-4.2.0-cp27-cp27mu-linux_x86_64.whl 
because it is not compatible with this Python 

Una nuova caratteristica recente è stato introdotto nel pip per sostenere "molti linux" ruote (vedi questo PEP)

Quando chiedendo un'installazione diretta della ruota, i controlli minimi sono fatti e pip presume che tu voglia veramente questo installato.

Quando una ruota è installata indirettamente come dep di un dep nel tuo caso, potrebbero esserci tag incompatibili in questo contesto.

Vorrei assicurarmi di utilizzare l'ultima versione di pip, setuptools e virtualenv per rimuovere le parti in movimento e potrebbe risolvere il problema.

vagamente correlati, e se questo può aiutare, io uso this script con un Linux/Mac o Windows involucro per eseguire coerente installazione di pacchetti pip vendored. Il punto chiave è vendere tutto e questo potrebbe essere un altro motivo per cui si ottiene un errore.

1

Assicurarsi che la versione della ruota utilizzata per creare la ruota sia la stessa utilizzata durante la distribuzione.

Ho riscontrato lo stesso problema durante il tentativo di distribuire una ruota costruita con 0.29.0, utilizzando la ruota 0.24.0.

Ho eseguito il downgrade della versione della ruota utilizzata per costruire la ruota in modo che corrisponda alla versione utilizzata durante la distribuzione e questo ha risolto il problema.

+0

Lo controllerò, grazie mille. – Anto

Problemi correlati