2016-01-18 27 views
5

Qual è la differenza tra il virtualenv di apt-get e quello di pip? Sono intercambiabili?Qual è la differenza tra apt-get virtualenv e pip virtualenv?

apt-get install virtualenv 

The following extra packages will be installed: 
    python-chardet-whl python-colorama-whl python-distlib-whl python-html5lib-whl python-pip-whl python-requests-whl 
    python-setuptools-whl python-six-whl python-urllib3-whl python3-virtualenv 
The following NEW packages will be installed: 
    python-chardet-whl python-colorama-whl python-distlib-whl python-html5lib-whl python-pip-whl python-requests-whl 
    python-setuptools-whl python-six-whl python-urllib3-whl python3-virtualenv virtualenv 
+0

apt-get è per le dipendenze di sistema, pip è per le dipendenze python. –

+2

Non me lo chiedo, sto chiedendo le virtualenv (s) – dtgq

+0

Perché la versione di Debian ha così tante dipendenze? Sono intercambiabili? – dtgq

risposta

8

Ad un livello alto apt è qualcosa che viene mantenuto dal sistema. In particolare, qualsiasi cosa nella famiglia debian utilizzerà apt per gestire cose come driver, compilatori, cose che richiedono un'integrazione di basso livello.

Questo significa per cose come numpy e scipy che richiedono l'integrazione a livello di sistema con le librerie FORTRAN, inclusa la dipendenza pip non funzionerà.

Alcuni pacchetti python strettamente collegati con le dipendenze a livello di sistema mantengono i pacchetti apt che forniscono semplicemente il pacchetto completo tutto in una volta senza dover coordinare tra i due. Il meno è che, poiché il processo di revisione di Canonical è piuttosto meticoloso (come dovrebbe essere), si otterrà, 9/10, una versione meno recente della libreria che si sta tentando di utilizzare.

Così, in breve: si sarà spesso richiedono apt pacchetti per consentire recenti pip installazioni più, e mentre le stesse dipendenze Python possono essere disponibili tramite apt, queste librerie sono in genere molto più vecchio e non potrebbe essere necessaria funzionalità.

Una soluzione alternativa è semplicemente utilizzare le dipendenze di sistema da uno di questi pacchetti anziché dal pacchetto completo. È possibile farlo utilizzando il flag build-deps. Un esempio comune riportata qui sotto:

apt-get build-dep python-scipy 
pip install scipy 

che effettivamente vi darà la versione più up-to-date di SciPy mentre si lavora all'interno della vostra virtualenv.

1

Usano repository separati, è possibile controllare quali versioni che stai ricevendo dal pip attraverso here. Per quanto riguarda lo apt-get, dovrai controllare la versione del gestore di pacchetti e l'elenco di sorgenti del tuo sistema operativo per vedere quali versioni stai ricevendo da lì.

3

apt o apt-get - installer debian distribuzioni simili e installare i pacchetti nella directory /usr/lib/python2.7/dist-packages.

pip install - pitone package manager e installare i pacchetti nella directory /usr/local/lib/python2.7/dist-packages

Entrambe le directory sono nel percorso di python che è alla ricerca di moduli di importazione.

>>> import sys 
>>> sys.path 
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7']