2011-08-22 10 views
271

È possibile? Quando si installa pip, installare i pacchetti python nella mia cartella $HOME. (Per esempio, voglio installare mercurial, utilizzando pip, ma dentro $HOME invece di /usr/local)

sto con una macchina mac e solo pensato a questa possibilità, invece di "inquinare" il mio /usr/local, vorrei utilizzare il mio $HOME invece.

PEP370 è esattamente questo. È sufficiente creare un ˜/.local e fare un pip install package abbastanza per rendere questi pacchetti da installare solo nella mia cartella $ HOME?

+0

Avete verificato virtualenv? È possibile installare pacchetti con pip in un ambiente isolato. – joet3ch

+2

Ci ho pensato, ma mi piacerebbe installare alcune applicazioni python usando il Python esistente (2.6.1), ma invece di installarlo su/usr/local /, installare nella mia cartella $ HOME e aggiungerlo a $ PATH. Voglio sapere se è possibile e qualsiasi avvertenza su questo approccio. –

+10

+1 per la promozione di PEP370. Questa è un'opzione semplice ma utile che più persone dovrebbero conoscere. –

risposta

380

Mentre è possibile utilizzare uno virtualenv, non è necessario. Il trucco sta passando l'argomento PEP370 --user allo script setup.py. Con l'ultima versione di pip, un modo per farlo è:

pip install --user mercurial 

Ciò dovrebbe tradursi nello script hg essere installato in $HOME/.local/bin/hg e il resto del pacchetto hg in $HOME/.local/lib/pythonx.y/site-packages/.

Si noti che quanto sopra è vero per Python 2.6. C'è stato uno bit of controversy tra gli sviluppatori core di Python su quale sia la posizione della directory appropriata su Mac OS X per le installazioni user in stile PEP370. In Python 2.7 e 3.2, la posizione su Mac OS X è stata modificata da $HOME/.local a $HOME/Library/Python. Questo potrebbe cambiare in una versione futura. Ma, per ora, su 2.7 (e 3.2, se hg erano supportati su Python 3), le posizioni di cui sopra saranno $HOME/Library/Python/x.y/bin/hg e $HOME/Library/Python/x.y/lib/python/site-packages.

+0

Buon punto. Sfortunatamente, c'è un bug in Python 2.7 che fa sì che PYTHONUSERBASE venga ignorato per le build del framework OS X. Sarà riparato per Python 2.7.3. –

+1

Questo sembra molto interessante. 'easy_install' viene installato in Mac OS X per impostazione predefinita, quindi avrei solo pip installato all'esterno della cartella' $ HOME'. –

+0

Il 'easy_install' che viene fornito con Snow Leopard installa' pip' su '/ Library/Python/2.6/site-packages/pip-1.0.2-py2.6.egg'. Facendo 'which pip' mostra'/usr/local/bin/pip'. Installando mercurial con '--user' argomento e pip,' which hg' ora mostra '$ HOME/.local/bin/hg' !. (Avevo bisogno di aggiungere '$ HOME/.local/bin' a' $ PATH' per farlo funzionare.) –

18

Vorrei utilizzare virtualenv nella directory HOME.

$ sudo easy_install -U virtualenv 
$ cd ~ 
$ virtualenv . 
$ bin/pip ... 

Si potrebbe quindi anche alterare ~/.(login|profile|bash_profile), a seconda di quale è giusto per la shell di aggiungere ~/bin al PATH e allora che pip|python|easy_install sarebbe quella usata di default.

+6

Il modo *" di fatto "* per farlo è' virtualenv venv', 'source venv/bin/activate'. Potresti non necessariamente voler ** sempre ** usare il tuo virtualenv, e usando questo metodo, il tuo prompt è preceduto da '(venv)' quando lo stai usando. – nyuszika7h

+2

@ nyuszika7h Sappiamo come usare virtualenv. Ma questo risponde davvero alla domanda ed è una soluzione molto accurata. – itsafire

+5

@itsafire Chi è "noi"? Vi consiglio di leggere https://en.wikipedia.org/wiki/Weasel_word – nyuszika7h

Problemi correlati