Python, кажется, имеет, несколько упаковывают систему управления, которая приводит к беспорядкам и конфликтам при использовании параллельно. Я хотел бы некоторое руководство в том, как действовать с этими инструментами для получения лучшего состояния системы.
Вот мои вопросы:
Основное подобие между apt
/apt-get
, pip
, easy_install
и conda
это, они - диспетчеры пакетов; существует больше различий между ними, чем существуют общие черты.
Давайте запустимся с легких вещей сначала. Никогда не используйте easy_install
pip
, и причины этого красноречиво объяснены в различном высоко upvoted ответы на https://stackoverflow.com/q/3220404/486919. Короче говоря, easy_install
является устаревшим и pip
должен всегда предпочитаться.
apt
/apt-get
Вы используете apt
или apt-get
устанавливать в системе/глобальном уровне пакеты Ubuntu, включая тех для Python, найденного в репозиториях APT. Необходимо выполнить эту команду с sudo
. В репозиториях Ubuntu названия пакетов Python 2 предварительно ожидаются с python
в то время как это для Python 3 предварительно ожидается с python3
, таким образом, ясно, какие пакеты необходимо установить в зависимости от того, какую версию интерпретатора Python Вы намереваетесь использовать. Некоторые примеры включают python-numpy
и python3-numpy
.
pip
pip
обозначает "Пакеты Установок Зернышка" или "Установки Зернышка Python", который является рекурсивным акронимом. Как следует из названия Вы используете pip
устанавливать пакеты Python только. В системе/глобальном уровне можно установить pip
для использования Python 2 sudo apt install python-pip
и для использования Python 3 sudo apt install python3-pip
. В Ubuntu, pip install
значения по умолчанию к pip install --user
. То же происходит, если Вы заменяете pip
с pip3
. Это означает, что пакеты Python по умолчанию установлены на основе в расчете на пользователя а не в системе/глобальном уровне. Это - хорошая вещь, потому что нет никаких серьезных оснований сделать пакеты Python доступными для всех пользователей по умолчанию. Можно установить их глобально путем выполнения команды с sudo
, но поскольку я объяснил в https://askubuntu.com/a/802594/15003, это - угроза безопасности и не должно быть сделано.
Лучший способ управлять зависимостями Python состоит в том, чтобы использовать виртуальные среды. Примером этого является virtualenv, который может быть установлен с помощью sudo apt install virtualenv
. Я записал короткий ответ об этом в https://askubuntu.com/a/786625/15003, но существуют другие очень хорошие ответы на вопрос, о котором можно читать.
conda
conda
диспетчер пакетов, который также позволяет Вам создавать виртуальные среды, таким образом, он несколько похож pip
+ virtualenv
. Согласно https://stackoverflow.com/a/20994790/486919, conda
может также "обработать зависимости библиотеки за пределами пакетов Python, а также самих пакетов Python". Я лично не использую Anaconda/Conda на своей машине Ubuntu с тех пор pip
и virtualenv
достаточно хороши для моих потребностей, но необходимо определенно проверить conda
.
Существует столько инструментов установки пакета когда дело доходит до Python: склонный - получают, побеждают, easy_install, conda и python3 версия тех. Кто-то мог объяснить, когда нужно использовать конкретные инструменты, и понятие тех инструментов сотрудничают? Я даже ценил бы его, если кто-то мог бы дать мне ссылку на статью, которая на самом деле проходит каждую из этих систем подробно, сравнивает их и выделяет различия между ними.
apt-get
Это не диспетчер пакетов Python, это - диспетчер пакетов для Ubuntu. Вы используете его для установки программного обеспечения Ubuntu.
Относительно того, почему это имеет пакеты Python в нем, пакеты Ubuntu большинство модулей Python как это: python-modulename
или python3-modulename
. Они Ubuntu модули Python устарели. Использовать pip
(или pip3
).
pip
Это - стандартный диспетчер пакетов Python. Когда в сомнении, используйте это.
conda
Это - диспетчер пакетов Python плюс менеджер по среде. Таким образом, это создает Вас изолированная, новая среда Python, позволяя Вам заморозить определенные модули в версии, не влияя на систему Python, и т.д.
Установка и под управлением Python фаршировала бы анаконду, заботятся о головной боли использования нескольких инструментов пакета Python?
Во-первых, это не головная боль. Просто
$ pip install modulename
(или pip3
для Python 3, с тех пор 2 и 3 являются чрезвычайно несовместимыми.)
Во-вторых, conda
еще один диспетчер пакетов для Python, который имеет (я думаю), меньше пакетов, чем pip
и только хорошо для замораживания определенных версий системных библиотек, модули Python и т.д.
Если пакеты Python, что установки анаконды уже присутствуют в системе, как те два координируют, когда мы используем их?
conda
перезаписывает уже существующие пакеты.