aggiornato: 2019-05-11: Questo post menziona principalmente virtualenv
, ma secondo il documento Python sull'installazione del modulo , poiché Python 3.5 "l'uso di venv
è ora raccomandato per la creazione di ambienti virtuali", mentre virtualenv
è un'alternativa per le versioni di Python precedenti alla 3.4 .
aggiornato: 17-08-2018: da conda-4.4.0 utilizzare conda
per activate
anaconda su tutte le piattaforme
aggiornato: 2017-03-27: PEP 513 - file manylinux
binari per PyPI
aggiornato: 19-08-2016: Opzione Anaconda Continuum
Questo è in qualche modo un duplicato di easy_install / pip o apt-get .
Per i pacchetti Python globali , utilizzare Ubuntu Software Center, apt, apt-get o synaptic
Ubuntu utilizza Python per molte funzioni importanti, quindi interferire con Python può danneggiare il sistema operativo. Questa è la ragione principale Io non uso mai pip
il mio sistema Ubuntu, ma invece io uso sia Ubuntu Software Center, sinaptica , apt-get
o il più recente semplicemente apt
, che tutti per default installare pacchetti dal repository di Ubuntu . Questi pacchetti sono testati, di solito pre-compilati in modo da installarsi più velocemente e alla fine progettati per Ubuntu. Inoltre, vengono installate anche tutte le dipendenze richieste e viene mantenuto un registro delle installazioni in modo che possano essere ripristinati. Penso che la maggior parte dei pacchetti abbia repository Launchpad corrispondenti in modo da poter presentare problemi.
Un altro motivo per usare entrambi i pacchetti Ubuntu è che a volte questi pacchetti Python hanno nomi diversi a seconda di dove li hai scaricati. Python-chardet è un esempio di un pacchetto che una volta è stato nominato una cosa su PyPI e un'altra cosa nel repository Ubuntu. Quindi fare qualcosa del genere pip install requests
non si rende conto che chardet è già installato nel tuo sistema perché la versione di Ubuntu ha un nome diverso, e di conseguenza installa una nuova versione che corromperà il tuo sistema in un modo insignificante minore ma comunque perché lo faresti.
In generale, si desidera installare solo codice attendibile nel proprio sistema operativo. Quindi dovresti essere nervoso per la digitazione $ sudo pip <anything-could-be-very-bad>
.
Infine, alcune cose sono semplicemente più facili da installare usando entrambi i pacchetti Ubuntu. Ad esempio, se provi pip install numpy
a installare numpy & scipy a meno che tu non abbia già installato gfortran, atlas-dev, blas-dev e lapack-dev, vedrai un flusso infinito di errori di compilazione. Tuttavia, installare numpy e scipy tramite il repository Ubuntu è facile come ...
$ sudo apt-get install python-numpy python-scipy
Sei fortunato, perché stai usando Ubuntu, una delle distribuzioni più ampiamente supportate e spesso aggiornate esistenti. Molto probabilmente ogni pacchetto Python di cui avrai bisogno si trova nel repository Ubuntu e probabilmente già installato sul tuo computer. E ogni 6 mesi verrà rilasciato un nuovo ciclo di pacchetti con l'ultima distribuzione di Ubuntu.
Se sei sicuro al 100% che il pacchetto non interferirà in alcun modo con il tuo sistema Ubuntu, allora puoi installarlo usando pip e Ubuntu è abbastanza carino da mantenere questi pacchetti separati dai pacchetti distro posizionando i pacchetti distro in una cartella chiamata dist-packages/
. Il repository Ubuntu ha sia pip, virtualenv che setuptools. Tuttavia, secondo il suggerimento di Wojciech di usare virtualenv.
Per i progetti personali di Python usa pip and wheel in virtualenv
Se hai bisogno dell'ultima versione o il modulo non è nel repository Ubuntu, avvia un virtualenv e usa pip per installare il pacchetto. Sebbene pip e setuptools si siano fusi, pip IMO è preferito su easy-install o distutils, poiché attenderà sempre che il pacchetto sia completamente scaricato e compilato prima di copiarlo nel file system e rende l'aggiornamento o la disinstallazione un gioco da ragazzi. In molti modi è simile a apt-get, in quanto generalmente gestisce bene le dipendenze. Tuttavia si dovrà potrebbe dover gestire alcune dipendenze da soli, ma dal momento che PEP 513 è stato adottato ora ci sono manylinux
i binari del Python Package Index (PyPI) per popolari distribuzioni Linux come Ubuntu e Fedora .ad esempio come menzionato sopra per NumPy e SciPy assicurati di aver installato gfortran, atlas-dev, blas-dev e lapack-dev dal repository Ubuntu Ad esempio, sia NumPy che SciPy sono ora distribuiti per Ubuntu come manylinux
ruote usando OpenBLAS invece come default di ATLAS. Puoi comunque costruirli dal sorgente usando le opzioni pip --no-use-wheel
o--no-binary <format control>
.
~$ sudo apt-get install gfortran libblas-dev liblapack-dev libatlas-dev python-virtualenv
~$ mkdir ~/.venvs
~$ virtualenv ~/.venvs/my_py_proj
~$ source ~/.venvs/my_py_proj/bin/activate
~(my_py_proj)$ pip install --no-use-wheel numpy scipy
Vedere la sezione successiva, "Non sei in sudoers
", di seguito per l'installazione di versioni aggiornate di pip, setuptools, virtualenv o ruote sul profilo personale utilizzando lo --user
schema di installazione con pip. Puoi usarlo per aggiornare pip per il tuo uso personale come JF Sebastian ha indicato nel suo commento a un'altra risposta . NOTA: -m
è davvero necessario solo su MS Windows quando si aggiorna pip .
python -m pip install --user pip setuptools wheel virtualenv
Le versioni più recenti di pip memorizzano automaticamente nella cache le ruote, quindi le seguenti sono utili solo per le versioni precedenti di pip. Dato che potresti finire per installarle molte volte, considera di usare la ruota con pip per creare una timoneria. Wheel è già incluso in virtualenv
v13.0.0 quindi se la tua versione di virtualenv
è troppo vecchia, potrebbe essere necessario installare prima wheel.
~(my_py_proj)$ pip install wheel # only for virtualenv < v13.0.0
~(my_py_proj)$ pip wheel --no-use-wheel numpy scipy
Questo creerà i file della ruota binaria in <cwd>/wheelhouse
, utilizzare -d
per specificare una directory diversa. Ora, se avvii un altro virtualenv e hai bisogno degli stessi pacchetti che hai già creato, puoi installarli dalla tua timoneria usandopip install --find-links=<fullpath>/wheelhouse
Leggi Installazione dei moduli Python nella documentazione di Python e Installazione dei pacchetti nella pagina principale Indice pacchetti Python . Anche pip , venv , virtualenv e wheel .
Se non ci sei sudoers
e virtualenv
non è installato.
Un'altra opzione per l'utilizzo di un ambiente virtuale, o se si utilizza una condivisione Linux senza privilegi di root, l'utilizzo degli schemi di installazione di Python --user
o --home=<wherever-you-want>
con Python distutils
installerà i pacchetti sul valore di site.USERBASE
o dove si desidera. Le versioni più recenti di pip hanno anche --user
un'opzione. Non usare sudo
!
pip install --user virtualenv
Se la tua versione Linux di pip è troppo vecchia, puoi passare le opzioni di installazione usando ciò --install-option
che è utile per passare opzioni personalizzate ad alcuni setup.py
script per alcuni pacchetti che creano estensioni, come l'impostazione di PREFIX
. Potrebbe essere necessario semplicemente estrarre la distribuzione e utilizzare distutils
per installare il pacchetto alla vecchia maniera digitando python setup install [options]
. La lettura di parte della documentazione di installazione e della distutils
documentazione può essere d'aiuto.
Python è abbastanza carino da aggiungere site.USERBASE
al tuo PYTHONPATH
vantaggio su qualsiasi altra cosa, quindi le modifiche avranno effetto solo su di te. Una posizione popolare per --home
è ~/.local
. Vedere la guida all'installazione del modulo Python per la struttura esatta dei file e in particolare dove si trovano i pacchetti del sito. Nota : se si utilizza il --home
sistema di installazione, allora potrebbe essere necessario aggiungere alla PYTHONPATH
variabile d'ambiente utilizzando export
nel vostro .bashrc
, .bash_profile
o la shell per i pacchetti localizzati ad essere disponibile in Python.
Usa Continuum Anaconda Python per progetti matematici, scientifici, dati o personali
Se stai usando Python per matematica, scienza o dati, allora IMO un'opzione davvero buona è la distribuzione Anaconda-Python o la distro miniconda di base rilasciata da Anaconda, Inc. (precedentemente nota come Continuum Analytics ) . Sebbene chiunque possa trarre vantaggio dall'uso di Anaconda per progetti personali, l'installazione predefinita include oltre 500 pacchetti matematici e scientifici come NumPy, SciPy, Pandas e Matplotlib , mentre miniconda installa solo Anaconda-Python e il gestore dell'ambiente conda. Anaconda si installa solo nel tuo profilo personale, vale a dire: /home/<user>/
e modifica il tuo ~/.bashrc
o ~/.bash_profile
per anteporre il percorso di Anaconda al tuo personale $PATH
consiglia di approvvigionamentoconda.sh
nel tuo ~/.bashrc
che ti permette di usare conda activate <env|default is base>
per avviare anaconda - questo influisce solo su di te - il tuo percorso di sistema è invariato . Quindi non non necessario l'accesso root o sudo
utilizzare Anaconda! Se hai già aggiunto Anaconda-Python, miniconda o conda al tuo percorso personale, dovresti rimuovere l' PATH
esportazione dal tuo ~/.bashrc
e aggiornare alla nuova raccomandazione , quindi il tuo sistema Python sarà di nuovo il primo.
Questo è in qualche modo simile --user
all'opzione che ho spiegato nell'ultima sezione tranne che si applica a Python nel suo insieme e non solo ai pacchetti. Pertanto Anaconda è completamente separato dal sistema Python , non interferirà con il sistema Python e solo tu puoi utilizzarlo o modificarlo. Poiché installa una nuova versione di Python e tutte le sue librerie, avrai bisogno di almeno 200 MB di spazio, ma è molto intelligente nella memorizzazione nella cache e nella gestione delle librerie che è importante per alcune delle cose interessanti che puoi fare con Anaconda.
Anaconda cura una raccolta di binari e librerie Python richiesti dalle dipendenze in un repository online (precedentemente chiamato binstar ) e ospitano anche pacchetti utente come "canali" diversi. Il gestore pacchetti utilizzato da Anaconda, conda
per impostazione predefinita installa i pacchetti da Anaconda, ma è possibile segnalare un "canale" diverso utilizzando l' -c
opzione.
Installa i pacchetti conda
proprio come pip
:
$ conda install -c pvlib pvlib # install pvlib pkg from pvlib channel
Ma conda
può fare molto di più! Può anche creare e gestire ambienti virtuali proprio come virtualenv
. Pertanto, poiché Anaconda crea ambienti virtuali, il pip
gestore pacchetti può essere utilizzato per installare pacchetti da PyPI in un ambiente Anaconda senza root o sudo
. Da non utilizzare sudo
con Anaconda! Avvertimento! Fai attenzione però quando mescoli pip
e conda
in un ambiente Anaconda, b / c dovrai gestire le dipendenze dei pacchetti con più attenzione. Un'altra opzione da utilizzare pip
in un ambiente conda è utilizzare il canale conda-forge, ma è anche meglio farlo in un nuovo ambiente conda con conda-forge come canale predefinito. Come ultima risorsa, se non riesci a trovare un pacchetto altro che su PyPI, considera l'utilizzo --no-deps
quindi installa manualmente le dipendenze rimanenti utilizzando conda
.
Anaconda è anche simile in qualche modo a Ruby RVM se hai familiarità con quello strumento. Anaconda conda
ti consente anche di creare ambienti virtuali con diverse versioni di Python . es : conda create -n py35sci python==3.5.2 numpy scipy matplotlib pandas statsmodels seaborn
creerà uno stack scientifico / data-science usando Python-3.5 in un nuovo ambiente chiamato py35sci
. Puoi cambiare ambiente usando conda
. Poiché conda-4.4.0, questo è ora diverso a virtualenv
che usa source venv/bin/activate
, ma precedente conda-4.4.0 i conda
comandi erano gli stessi come virtualenv
e utilizzato anche source
:
# AFTER conda-4.4
~/Projects/myproj $ conda activate py35sci
# BEFORE conda-4.4
~/Projects/myproj $ source activate py35sci
Ma aspetta, c'è di più! Anaconda può anche installare lingue diverse come R per la programmazione statistica dal canale Anacondar
. Puoi persino impostare il tuo canale per caricare distribuzioni di pacchetti create per conda . Come accennato, conda-forge mantiene build automatizzate di molti pacchetti su PyPI sul canale Anaconda conda-forge .
Epilogo
Ci sono molte opzioni per mantenere i tuoi progetti Python su Linux a seconda delle tue esigenze e accessi personali. Tuttavia, se c'è qualcosa che spero tu possa togliere da questa risposta è che non dovresti quasi mai usare sudo
per installare i pacchetti Python . L'uso di sudo
dovrebbe essere un odore per te che qualcosa non va. Sei stato avvertito.
Buona fortuna e buona programmazione!