2016-01-18 10 views
5

Was ist der Unterschied zwischen dem virtualenv von apt-get und dem von pip? Sind sie austauschbar?Was ist der Unterschied zwischen apt-get virtualenv und 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 ist für Systemabhängigkeiten, pip ist für Python-Abhängigkeiten. –

+2

Ich habe nicht danach gefragt, ich frage nach den Virtualenv (s) – dtgq

+0

Warum hat die Debian-Version so viele Abhängigkeiten? Sind sie austauschbar? – dtgq

Antwort

8

Auf einem hohen Niveau wird apt etwas von Ihrem System verwaltet. Insbesondere wird alles in der debian-Familie apt verwenden, um Dinge wie Treiber, Compiler, Dinge zu verwalten, die eine Integration auf niedrigerer Ebene erfordern.

Dies bedeutet für Dinge wie numpy und scipy, die System-Level-Integration mit FORTRAN-Bibliotheken erfordern, einschließlich der pip Abhängigkeit wird nicht wirklich funktionieren.

Einige Python-Pakete, die eng mit den Abhängigkeiten auf Systemebene verbunden sind, behalten apt Pakete bei, die Ihnen einfach das gesamte Paket auf einmal zur Verfügung stellen, ohne zwischen den beiden koordinieren zu müssen. Das Minus ist, dass, weil Canonical Review-Prozess ist sehr sorgfältig (wie es sein sollte) Sie erhalten, eine weniger aktuelle Version der Bibliothek, die Sie versuchen zu verwenden.

Also, kurz gesagt: Sie benötigen oft apt Pakete neuere pip Installationen zu ermöglichen, und während die gleichen Python-Abhängigkeiten über apt verfügbar sein können, diese Bibliotheken sind in der Regel viel älter und nicht die Funktionalität erforderlich sein können.

Eine häufige Problemumgehung besteht darin, einfach die Systemabhängigkeiten von einem dieser Pakete anstelle des vollständigen Pakets zu verwenden. Sie können dies tun, indem Sie das Flag build-deps verwenden. Ein gängiges Beispiel unten angegeben:

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

, die Sie tatsächlich geben die meisten up-to-date-Version von scipy während in Ihrem virtualenv arbeiten.

1

Sie getrennte Repositories verwenden, können Sie überprüfen, welche Versionen Sie von pip durch here bekommen. Wie bei apt-get müssen Sie die Paketmanagerversion und die Quellenliste Ihres Betriebssystems überprüfen, um zu sehen, welche Versionen Sie von dort erhalten.

3

apt oder apt-get - Installer Debian ähnliche Distributionen und installieren Sie die Pakete im Verzeichnis /usr/lib/python2.7/dist-packages.

pip install - Python-Paket-Manager und installieren Sie die Pakete im Verzeichnis /usr/local/lib/python2.7/dist-packages

Beiden Verzeichnisse im Pfad von Python sind, dass es für die Module Import sucht.

>>> 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']