Рекомендований спосіб встановлення пакетів 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

Додаткову інформацію див. У посібнику з pip .


якщо ви хочете, щоб пакет 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стандарт ієрархії файлової системи:


ІМХО, це разом із вказівником на встановлення віртуалів повинен бути прийнятою відповіддю.
ttsiodras

1
Тьфу. Новіше pythonі хотілося б, щоб я знав це, перш ніж sudioпіп-пінг. Дякую за це
Генді

Що робити , якщо ви робите потрібен пітон пакети для всіх користувачів?
Мехрдад

@Mehrdad оновив відповідь
lesmana

@lesmana: Дякую! Але ви впевнені, що це рекомендований спосіб зробити це? Це перший раз, коли я чув, що хтось пропонує запропонувати використовувати / вибрати для Python ...
Мехрдад

9

Зазвичай у дистрибутиві рекомендується використовувати диспетчер пакунків дистрибутива. Ви, звичайно, можете встановлювати речі за допомогою pip (або, у світі perl, cpan), або компілювати та встановлювати речі самостійно. Однак, зробивши це, менеджер пакунків дистрибутива не знає про них і не може керувати залежностями або оновленнями для них.

Використання pip майже рівнозначно компіляції та встановленню власного пакету. Зробіть це, якщо вам потрібно, але віддайте перевагу диспетчеру пакунків дистрибутива.


2
Вам слід абсолютно уникати використання pip(принаймні глобально через sudoабо як root) - я просто отримав досить багато site-package/...помилок, коли pacmanнамагався встановити деякі залежності
Tobias Kienzler

У мене теж були такі помилки. Я оновив усі пакети 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 User Repositories) - для цих пакетів потрібно завантажити файл 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 з ноутбука Юпітера

Код Python в ArchLinux

Якщо дотримуватися цих правил, ваш ArchLinux не порушиться і не матиме проблем із залежністю між PACMAN і PIP.

Сподіваюся, це корисно!


5

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

https://github.com/bluepeppers/pip2arch

потім складіть і встановіть створений PKGBUILD.

Я залишаю virtualenvs для пакетів, які, можливо, я хочу змінити або зламати.



1

Окрім інших відповідей тут, ознайомтесь із python-virtualenvпакетом. Це може бути дуже корисно, якщо ви розробляєте декілька проектів з різними залежностями з невідповідними номерами версій.

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.