2016-01-18 3 views
5

В чем разница между virtualenv от apt-get и от pip? Являются ли они взаимозаменяемыми?В чем разница между apt-get virtualenv и 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 предназначен для системных зависимостей, pip предназначен для зависимостей python. –

+2

Не спрашивали об этом, я спрашиваю о virtualenv (s) – dtgq

+0

Почему в версии Debian так много зависимостей? Являются ли они взаимозаменяемыми? – dtgq

ответ

8

На высоком уровне apt что-то поддерживается в вашей системе. В частности, что-либо в семье debian будет использовать apt для управления такими вещами, как драйверы, компиляторы, вещи, требующие интеграции на более низком уровне.

Это означает, что для таких вещей, как numpy и scipy, которые требуют интеграции на системном уровне с библиотеками FORTRAN, в том числе зависимость pip, на самом деле не будет работать.

Некоторые пакеты python, которые тесно связаны с зависимостями на системном уровне, поддерживают пакеты apt, которые просто дают вам полный пакет сразу, без необходимости координировать между ними. Минус заключается в том, что, поскольку процесс обзора Canonical довольно дотошный (как и должно быть), вы получите 9/10 менее последнюю версию библиотеки, которую вы пытаетесь использовать.

Так, короче говоря: вы будете часто требуют apt пакетов для того, чтобы более позднего pip устанавливает и в то время как один и та же зависимость питона может быть доступна через apt, эти библиотеки, как правило, гораздо старше, и, возможно, не требуются функциональность.

Общим решением является просто использовать системные зависимости из одного из этих пакетов, а не полного пакета. Вы можете сделать это, используя флаг build-deps. Общий пример, приведенный ниже:

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

Что будет на самом деле даст вам максимальную версию уточненный в SciPy во время работы в вашей virtualenv.

1

Они используют отдельные репозитории, вы можете проверить, какие версии вы получаете от pip через here. Что касается apt-get, вам нужно будет проверить версию диспетчера пакетов и исходный список вашей операционной системы, чтобы узнать, какие версии вы получаете оттуда.

3

apt или apt-get - установить аналогичные дистрибутивы и установить пакеты в каталог /usr/lib/python2.7/dist-packages.

pip install - питон менеджер и установить пакеты в каталоге /usr/local/lib/python2.7/dist-packages

Обе директории находятся в пути питона, что он ищет модули импорта пакета.

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

 Смежные вопросы

  • Нет связанных вопросов^_^