2014-10-20 4 views
8

Per fare un esempio, se faccio funzionare l'ordineCome si specifica directory bin per pip installazione con l'opzione abilitata --target

sudo pip install gunicorn 

C'è ora un file

/usr/local/bin/gunicorn 

e una cartella

/usr/local/lib/python2.7/site-packages/gunicorn 

E posso eseguire "gunicorn" dal guscio.

Tuttavia, se faccio funzionare l'ordine

sudo pip install gunicorn --target=~/tmp_directory 

C'è una cartella

~/tmp_directory/gunicorn 

Tuttavia, non v'è alcuna "bin/gunicorn" ovunque e non posso correre "gunicorn" dalla shell . Guardando attraverso la documentazione di pip non riesco a trovare nulla per questo caso particolare. La ragione esatta per cui lo faccio è provare a configurare un buildpack personalizzato su Heroku.

+0

Questo sembra essere problema. Mi piace molto l'opzione --target. Ho creato un problema su Github, spero che diventi un po 'd'amore https://github.com/pypa/pip/issues/3934 – chhantyal

+0

Modifica: Controlla la mia risposta, la seconda. È possibile specificare la directory degli script. – chhantyal

risposta

4

È possibile sudo ln -s ~/tmp_directory/gunicorn /usr/bin/gunicorn.

Se ho compreso correttamente le tue esigenze, ti suggeriamo di provare virtualenv, uno strumento per creare ambienti Python isolati. Puoi installare diverse versioni dei pacchetti Python per ciascuno dei tuoi progetti sullo stesso server. Altamente raccomandato per lo sviluppo di Python. Sto utilizzando virtualenvwrapper, un wrapper per renderlo un po 'più facile da usare

+0

Immagino di non aver dato molto contesto al mio problema ... in questo caso la directory '/ usr /' è di sola lettura, quindi non potrei scriverlo, quindi un percorso di 'bin/gunicorn' non esiste ovunque ... non sembra essere stato creato affatto. Ho risolto il problema specificando '--root = ~' invece di usare '--target' –

5

Ho appena scoperto che in realtà è possibile dire 'pip' dove mettere gli script, dati, ecc

È possibile utilizzare --install-option per passare le opzioni per impostare strumenti. Quindi, se si desidera specificare dove mettere gli script, è possibile:

pip install gunicorn --install-option="--install-scripts=$PWD/bin" -t python_modules/ 

Ora avete gunicorn comando all'interno bin/ nella directory corrente e pacchetto installato in target dir python_modules.

bin/gunicorn 
0

Un problema per quanto riguarda questo problema è stato creato su GitHub: https://github.com/pypa/pip/issues/3934

Questo è perché il flag --install-option="--install-scripts=$PWD/bin", che è necessaria, non può essere utilizzato con .whl file:

.../lib/python2.7/site-packages/pip/commands/install.py:194: 
UserWarning: Disabling all use of wheels due to the use of --build-options/--global-options/--install-options. 
cmdoptions.check_install_build_global(options)