Invece --target
dell'opzione o --install-options
dell'opzione, ho scoperto che quanto segue funziona bene (dalla discussione su un bug relativo a questa cosa su https://github.com/pypa/pip/issues/446 ):
PYTHONUSERBASE=/path/to/install/to pip install --user
(Oppure imposta la PYTHONUSERBASE
directory nel tuo ambiente prima di eseguire il comando, utilizzando export PYTHONUSERBASE=/path/to/install/to
)
Questo utilizza il molto utile --user
opzione, ma dice che per fare i bin
, lib
, share
e altre directory che ci si aspetta in un prefisso personalizzato piuttosto che $HOME/.local
.
Poi si può aggiungere questo ai tuoi PATH
, PYTHONPATH
e altre variabili, come si farebbe con una normale directory di installazione.
Si noti che potrebbe anche essere necessario specificare le opzioni --upgrade
e --ignore-installed
se eventuali pacchetti da cui dipende richiedono l'installazione di versioni più recenti nella PYTHONUSERBASE
directory, per sovrascrivere le versioni fornite dal sistema.
Un esempio completo:
PYTHONUSERBASE=/opt/mysterypackage-1.0/python-deps pip install --user --upgrade numpy scipy
..per installare scipy
e numpy
impacchettare le versioni più recenti in una directory che puoi quindi includere nel tuo PYTHONPATH
like (usando bash e per python 2.6 su CentOS 6 per questo esempio):
export PYTHONPATH=/opt/mysterypackage-1.0/python-deps/lib64/python2.6/site-packages:$PYTHONPATH
export PATH=/opt/mysterypackage-1.0/python-deps/bin:$PATH
L'uso di virtualenv è ancora una soluzione migliore e più ordinata!