Рекомендуемый способ установки пакетов Python на Arch

37

Каков рекомендуемый способ установки пакетов Python на Arch? Поиск их в AUR и их установка оттуда (или создание PKGBUILDфайла для создания пакета самостоятельно) или использование pip?

Я начал с установки вещей из pacman и AUR и не знаю, будет ли разумно смешивать их с pipпакетами.

Нильс Вернер
источник

Ответы:

34

Если вам не нужны пакеты python для всех пользователей, вы можете установить их дома:

pip install --user packagename

Установка в вашем доме не будет конфликтовать с менеджером пакетов.

По умолчанию pip install --userбудет установлен в вашем каталоге пользователя сайта. Обычно это что - то вроде: /home/lesmana/.local/lib/python3.6/site-packages.

Следующая команда напечатает, среди прочего, ваше местоположение "пользовательский сайт":

python -m site

Чтобы настроить место установки:

PYTHONUSERBASE=$HOME/some/dir pip install --user packagename

это установит все под $HOME/some/dir

бежать:

PYTHONUSERBASE=$HOME/some/dir $HOME/some/dir/bin/progname

См. Руководство по пунктам для получения дополнительной информации.


если вам нужен пакет python для всех пользователей, тогда лучше всего его установить /opt. например вот так:

PYTHONUSERBASE=/opt/packagedir pip install packagename

(обратите внимание на отсутствие --user )

и запустить, как указано выше:

PYTHONUSERBASE=/opt/packagedir /opt/packagedir/bin/progname

Фоновое объяснение: /optдистрибутивы gnu / linux обычно признаются каталогом, в который локальный пользователь или системный администратор может установить свои собственные компоненты. другими словами: менеджер пакетов дистрибутивов обычно не трогает /opt. это более или менее стандартизировано в стандарте иерархии файловой системы

Для удобства пользователей вы все равно захотите написать скрипт-обертку и поместить его в /binили /usr/bin. Это все еще несет риск столкновения с менеджером дистрибутива, но по крайней мере это всего лишь один файл сценария оболочки. Таким образом, ущерб, который может быть нанесен, минимален. Вы можете назвать скрипт-обертку как-то так local-fooили иначе, custom-fooчтобы минимизировать риск столкновения с менеджером дистрибутива.

В качестве альтернативы вы можете изменить, PATHчтобы включить /opt/binи разместить свой скрипт оболочки там. Но это опять-таки требует от вас изменения (или некоторых) системных файлов, в которых они PATHопределены, которые снова могут быть перезаписаны менеджером пакетов распространения.

Короче говоря: если вы хотите установить для всех пользователей, сделайте это в /opt. То, где вы размещаете скрипт-обертку для комфорта, - это суждение.

Дополнительная информация о /optстандарте и иерархии файловых систем:

lesmana
источник
ИМХО, это, вместе с указателем на настройку virtualenvs, должно быть принятым ответом.
Циодрас
1
Тьфу. Более новый pythonи хотел бы, чтобы я знал это, прежде чем sudioпиппинг вещи. Спасибо за это.
Hendy
Что делать , если вы делаете нужен питон пакеты для всех пользователей?
Мердад
@Mehrdad обновленный ответ
Lesmana
@lesmana: Спасибо! Но вы уверены, что это рекомендуемый способ сделать это? Это первый раз, когда я слышал, что кто-то предлагает использовать / opt для Python ...
Mehrdad
9

Обычно в дистрибутиве рекомендуется использовать менеджер пакетов дистрибутива. Конечно, вы можете установить вещи с помощью pip (или, в мире perl, cpan), или скомпилировать и установить вещи самостоятельно. Однако, когда вы делаете это, менеджер пакетов дистрибутива не знает о них и не может управлять зависимостями или обновлениями для них.

Использование pip в значительной степени эквивалентно компиляции и установке вашего собственного пакета. Делайте это, если вам нужно, но предпочитайте менеджер пакетов дистрибутива.

Сокол Момот
источник
2
Вы должны абсолютно избегать использования pip(по крайней мере глобально через sudoили как root) - я только что получил довольно много site-package/...уже существующих ошибок при pacmanпопытке установить некоторые зависимости
Тобиас Кинцлер
Я тоже только что получил такие ошибки. Я обновил все пакеты pip3, а затем pacman отказался от обновления системы из-за конфликтов. Мне пришлось удалить этот пакет через pip3 и pacman, затем выполнить обновление системы и, наконец, установить пакет обратно (используя pacman, конечно).
Ал.Г.
8

Правильный путь для ArchLinux

Правильный способ установки пакетов PYTHON в ArchLinux - это использование PACMAN! Для установки пакетов на Python3 вы должны использовать

sudo pacman -S python-'package'

Если вы хотите установить пакеты из Python2, вы должны использовать

sudo pacman -S python2-'package'

Большинство пакетов python находятся в репозиториях ArchLinux, а пакеты, которых нет в AUR (пользовательские репозитории ArchLinux) - для этих пакетов вам нужно скачать файл PKGBUILD и скомпилировать. После этого вы должны использовать PACMAN для завершения установки

makepkg -s
sudo pacman -U 'compiled-package'

Второй правильный путь для ArchLinux

Когда пакет не находится в AUR или PKGBUILD не работает, вы можете использовать PIP для его установки на Python3

sudo pip install 'python-package'

или Python2

sudo pip2 install 'python-package'

Вы могли бы дать шанс virtualenvили дажеconda

На Arch вы также можете использовать VirtualEnvironments. Это может принести переносимость вашего кода и поддерживать старые пакеты. Установите его с

sudo pacman -S python-virtualenv

и попробуй это

virtualenv -p /usr/bin/python3 yourenv
source yourenv/bin/activate
pip install package-name

При создании этой среды yourenvвы будете pipустанавливать пакеты только в эту среду, а не на всю систему.

Эти другие ссылки могут быть полезны, если вы хотите узнать больше об управлении пакетами в Linux с помощью condaили virtualenv:

Установка пакетов Python из ноутбука Jupyter

Код Python на ArchLinux

Если вы будете следовать этим правилам, ваш ArchLinux не сломается и не будет проблем с зависимостями между PACMAN и PIP.

Надеюсь, это полезно!

Эмануэль Фонтеллес
источник
5

Для определенных пакетов (которые я, скорее всего, не хочу взламывать) я создаю свой собственный пакет, используя это:

https://github.com/bluepeppers/pip2arch

затем соберите и установите PKGBUILD.

Я оставляю virtualenvs для пакетов, которые я могу захотеть изменить или взломать.

rmorgans
источник
Существует также github.com/wenLiangcan/pip2pkgbuild
Тобиас Кинцлер
1

В дополнение к другим ответам здесь, проверить python-virtualenvпакет. Это может быть очень полезно, если вы разрабатываете несколько проектов с разными зависимостями с несовпадающими номерами версий.

https://wiki.archlinux.org/index.php/Python_VirtualEnv

Также помните, что есть два варианта pip и virtualenv. Один для Python 2 и один для Python 3. Если установка не удалась с синтаксической ошибкой, возможно, вы пытаетесь использовать неправильную версию.

bobbaluba
источник