Zalecany sposób instalowania pakietów Pythona w Arch

37

Jaki jest zalecany sposób instalowania pakietów Pythona w Arch? Szukając ich na AUR i instalując je stamtąd (lub utwórz PKGBUILDplik, aby sam stworzyć pakiet), czy używasz pip?

Zacząłem od zainstalowania rzeczy z Pacmana i AUR i nie wiem, czy rozsądnie byłoby mieszać z pippakietami.

Nils Werner
źródło

Odpowiedzi:

34

Jeśli nie potrzebujesz pakietów python dla wszystkich użytkowników, możesz zainstalować je w domu w następujący sposób:

pip install --user packagename

Instalowanie w domu nie spowoduje konfliktu z menedżerem pakietów.

Domyślnie pip install --userzostanie zainstalowany w katalogu „witryna użytkownika”. Zwykle, że jest coś takiego jak: /home/lesmana/.local/lib/python3.6/site-packages.

Następujące polecenie wydrukuje między innymi lokalizację „witryny użytkownika”:

python -m site

Aby dostosować lokalizację instalacji:

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

to zainstaluje wszystko pod $HOME/some/dir

biegać:

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

Więcej informacji znajduje się w instrukcji pip .


jeśli chcesz pakiet Pythona dla wszystkich użytkowników, najlepszym miejscem do jego instalacji jest /opt. na przykład jak to:

PYTHONUSERBASE=/opt/packagedir pip install packagename

(zauważ brak --user)

i uruchomić, jak wyżej:

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

Wyjaśnienie w tle: /optjest powszechnie uznawane przez dystrybucje gnu / linux za katalog, w którym lokalny użytkownik lub administrator systemu może zainstalować swoje własne rzeczy. innymi słowy: menedżer pakietów dystrybucji zwykle nie dotyka /opt. jest to mniej więcej standaryzowane w standardzie hierarchii systemów plików

Dla wygody użytkowników nadal będziesz chciał napisać skrypt opakowujący i umieścić go w /binlub /usr/bin. Wciąż istnieje ryzyko kolizji z menedżerem pakietów dystrybucyjnych, ale przynajmniej jest to tylko jeden plik skryptu opakowania. Zatem szkody, które można wyrządzić, są minimalne. Możesz nazwać skrypt opakowania czymś w rodzaju local-foolub w custom-foocelu dalszego zminimalizowania ryzyka kolizji z menedżerem pakietu dystrybucyjnego.

Alternatywnie możesz zmodyfikować, PATHaby uwzględnić /opt/bini umieścić tam skrypt otoki. Ale to znowu wymaga zmodyfikowania (lub niektórych) plików systemowych, które PATHsą zdefiniowane i które mogą zostać zastąpione przez menedżera pakietów dystrybucyjnych.

W skrócie: jeśli chcesz zainstalować dla wszystkich użytkowników, zrób to w /opt. Tam, gdzie umieszczasz skrypt otoki dla wygody, jest wezwanie do osądu.

Więcej informacji na temat /optstandardu hierarchii systemu plików:

lesmana
źródło
IMHO, to wraz ze wskaźnikiem do konfiguracji virtualenvs powinno być przyjętą odpowiedzią.
ttsiodras
1
Ugh. Nowsze pythoni żałuję, że nie wiedziałem o tym przed sudiowypipowaniem rzeczy. Dzięki za to.
Hendy
Co zrobić, jeśli zrobić potrzebne pakiety Pythona dla wszystkich użytkowników?
Mehrdad
@Mehrdad zaktualizowana odpowiedź
lesmana
@lesmana: Dzięki! Ale czy jesteś pewien, że jest to zalecany sposób? Po raz pierwszy słyszę, że ktoś sugeruje użycie / opt dla Pythona ...
Mehrdad
9

Zazwyczaj w dystrybucji zaleca się użycie menedżera pakietów tej dystrybucji. Możesz oczywiście zainstalować rzeczy za pomocą pip (lub, w świecie perla, cpan) lub skompilować i zainstalować rzeczy samodzielnie. Jednak po wykonaniu tej czynności menedżer pakietów dystrybucji nie wie o nich i nie może zarządzać dla nich zależnościami ani aktualizacjami.

Korzystanie z pip jest prawie równoważne z kompilacją i instalacją własnego pakietu. Zrób to, jeśli potrzebujesz, ale wolisz menedżera pakietów dystrybucji.

Falcon Momot
źródło
2
Powinieneś absolutnie unikać używania pip(przynajmniej globalnie przez sudolub jako root) - Właśnie dostałem sporo site-package/...już istniejących błędów, gdy pacmanpróbowałem zainstalować pewne zależności
Tobias Kienzler
Właśnie dostałem takie błędy. Zaktualizowałem wszystkie pakiety pip3, a następnie Pacman odmówił aktualizacji systemu z powodu konfliktów. Musiałem odinstalować ten pakiet zarówno za pomocą pip3, jak i pacmana, następnie zaktualizować system, a na końcu zainstalować pakiet z powrotem (oczywiście za pomocą pacmana).
Al.G.
8

Właściwy sposób dla ArchLinux

Właściwym sposobem instalacji pakietów PYTHON w ArchLinux jest użycie PACMAN! Aby zainstalować pakiety w Python3, musisz użyć

sudo pacman -S python-'package'

Jeśli chcesz zainstalować pakiety z Python2, musisz użyć

sudo pacman -S python2-'package'

Większość pakietów Pythona znajduje się w repozytoriach ArchLinux, a pakietów, które nie znajdują się w AUR (Repozytoria użytkowników ArchLinux) - w przypadku tych pakietów należy pobrać plik PKGBUILD i skompilować. Następnie musisz użyć PACMAN, aby zakończyć instalację

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

Drugi właściwy sposób dla ArchLinux

Kiedy pakiet nie znajduje się w AUR lub PKGBUILD nie działa, możesz użyć PIP, aby zainstalować go w Python3

sudo pip install 'python-package'

lub Python2

sudo pip2 install 'python-package'

Możesz dać szansę, virtualenva nawetconda

W Arch możesz także korzystać z VirtualEnvironments. Może to zapewnić przenośność twojego kodu i utrzymanie starych pakietów. Zainstaluj za pomocą

sudo pacman -S python-virtualenv

i spróbuj tego

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

Podczas tworzenia tego środowiska yourenvskonfigurujesz pipinstalowanie pakietów tylko w tym środowisku, a nie w całym systemie.

Te inne linki mogą być przydatne, jeśli chcesz dowiedzieć się więcej o zarządzaniu pakietami w systemie Linux za pomocą condalub virtualenv:

Instalowanie pakietów Python z notatnika Jupyter

Kod Python na ArchLinux

Jeśli będziesz przestrzegać tych zasad, twój ArchLinux nie ulegnie awarii i nie będzie miał problemów z zależnościami między PACMAN a PIP.

Mam nadzieję, że to przydatne!

Emanuel Fontelles
źródło
5

W przypadku niektórych pakietów (tych, których najprawdopodobniej nie chcę hakować), tworzę własny pakiet, używając tego:

https://github.com/bluepeppers/pip2arch

następnie skompiluj i zainstaluj wyprodukowane PKGBUILD.

Opuszczam virtualenvs dla pakietów, które chciałbym zmodyfikować lub zhakować.

rmorgans
źródło
Istnieje również github.com/wenLiangcan/pip2pkgbuild
Tobias Kienzler
1

Oprócz innych odpowiedzi tutaj sprawdź python-virtualenvpakiet. Może to być bardzo przydatne, jeśli programujesz w kilku projektach o różnych zależnościach z niedopasowanymi numerami wersji.

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

Uważaj też, że istnieją dwa warianty pip i virtualenv. Jeden dla Python 2 i jeden dla Python 3. Jeśli instalacja nie powiedzie się z powodu błędu składniowego, być może próbujesz z niewłaściwą wersją.

Bobbaluba
źródło