Modo consigliato di installare pacchetti python su Arch


37

Qual è il modo consigliato di installare i pacchetti python su Arch? Cercarli su AUR e installarli da lì (o creare un PKGBUILDfile per creare un pacchetto da soli) o utilizzare pip?

Ho iniziato installando cose da Pacman e AUR e non so se sarebbe saggio mescolarsi con i pippacchetti.

Risposte:


34

Se non hai bisogno dei pacchetti python per tutti gli utenti, puoi installarli a casa tua in questo modo:

pip install --user packagename

L'installazione in casa non è in conflitto con il gestore pacchetti.

Per impostazione predefinita pip install --userverrà installato nella directory "sito dell'utente". Di solito questo è qualcosa di simile: /home/lesmana/.local/lib/python3.6/site-packages.

Il seguente comando stamperà, tra l'altro, la posizione del "sito dell'utente":

python -m site

Per personalizzare il percorso di installazione:

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

questo installerà tutto sotto $HOME/some/dir

correre:

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

Vedere il manuale del pip per ulteriori informazioni.


se vuoi il pacchetto python per tutti gli utenti, allora il posto migliore per installarlo è /opt. ad esempio in questo modo:

PYTHONUSERBASE=/opt/packagedir pip install packagename

(notare i dispersi --user)

ed eseguire, come sopra:

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

Spiegazione di base: /optè comunemente riconosciuto dalle distribuzioni gnu / linux come la directory in cui l'utente locale o l'amministratore di sistema possono installare le proprie cose. in altre parole: il gestore di pacchetti di distribuzioni di solito non tocca /opt. questo è più o meno standardizzato nel Filesystem Hierarchy Standard

Per comodità per gli utenti, vorrai comunque scrivere uno script wrapper e inserirlo in /bino /usr/bin. Ciò comporta ancora il rischio di scontrarsi con il gestore dei pacchetti di distribuzione, ma almeno è solo un file di script wrapper. Quindi il danno che potrebbe essere fatto è minimo. È possibile denominare lo script wrapper in modo simile local-fooo custom-fooper ridurre ulteriormente il rischio di collisione con il gestore dei pacchetti di distribuzione.

In alternativa puoi modificare PATHper includere /opt/bine posizionare lì lo script del wrapper. Ma ciò richiede di nuovo di modificare un (o alcuni) file di sistema dove PATHviene definito che può essere nuovamente sovrascritto dal gestore dei pacchetti di distribuzione.

In breve: se si desidera installare per tutti gli utenti, farlo in /opt. Dove si colloca la sceneggiatura wrapper per comodità è una chiamata di giudizio.

Ulteriori informazioni su /opte Filesystem Hierarchy Standard:


IMHO, questa, insieme a un puntatore alla configurazione di virtualenvs, dovrebbe essere la risposta accettata.
ttsiodras,

1
Ugh. Più recente pythone vorrei averlo saputo prima di sudioeseguire il piping delle cose. Grazie per questo.
Hendy,

Cosa succede se si fa bisogno dei pacchetti di Python per tutti gli utenti?
Mehrdad,

@Mehrdad risposta aggiornata
lesmana

@lesmana: grazie! Ma sei sicuro che sia il modo consigliato per farlo? Questa è la prima volta che sento qualcuno suggerire di usare / optare per Python ...
Mehrdad,

9

In genere, in una distribuzione, si consiglia di utilizzare il gestore pacchetti della distribuzione. Puoi ovviamente installare cose usando pip (o, nel mondo perl, cpan), o compilare e installare cose da te. Tuttavia, quando lo fai, il gestore dei pacchetti della distribuzione non li conosce e non può gestire dipendenze o aggiornamenti per loro.

L'uso di pip è praticamente equivalente alla compilazione e installazione del proprio pacchetto. Fallo se necessario, ma preferisci il gestore dei pacchetti della distribuzione.


2
Dovresti assolutamente evitare di usare pip(almeno a livello globale tramite sudoo come root) - Ho appena ricevuto alcuni site-package/...errori già esistenti quando ho pacmanprovato a installare alcune dipendenze
Tobias Kienzler,

Ho appena ricevuto anche questi errori. Avevo aggiornato tutti i pacchetti pip3 e poi Pacman ha rifiutato di fare l'aggiornamento del sistema a causa di conflitti. Ho dovuto disinstallare quel pacchetto sia tramite pip3 che pacman, quindi eseguire l'aggiornamento del sistema e infine installare nuovamente il pacchetto (usando pacman, ovviamente).
Al.G.

8

Il modo giusto per ArchLinux

Il modo giusto per installare i pacchetti PYTHON in ArchLinux è usare PACMAN! Per installare i pacchetti su Python3 devi usare

sudo pacman -S python-'package'

Se vuoi installare pacchetti da Python2, devi usare

sudo pacman -S python2-'package'

La maggior parte dei pacchetti python si trovano nei repository ArchLinux e i pacchetti che non si trovano in AUR (ArchLinux User Repositories) - per questi pacchetti è necessario scaricare il file PKGBUILD e compilarlo. Successivamente, è necessario utilizzare PACMAN per completare l'installazione

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

Il secondo modo giusto per ArchLinux

Quando il pacchetto non è in AUR o PKGBUILD non funziona, è possibile utilizzare PIP per installarlo su Python3

sudo pip install 'python-package'

o Python2

sudo pip2 install 'python-package'

Potresti dare una possibilità virtualenvo addiritturaconda

Su Arch puoi anche usare VirtualEnvironments. Questo può portare portabilità al tuo codice e mantenere anche i vecchi pacchetti. Installalo con

sudo pacman -S python-virtualenv

e prova questo

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

Quando si crea questo ambiente yourenv, verrà configurato pipper installare i pacchetti solo in questo ambiente, non nell'intero sistema.

Questi altri link possono essere utili se vuoi saperne di più sulla gestione dei pacchetti su Linux con condao virtualenv:

Installazione dei pacchetti Python da un notebook Jupyter

Code Python su ArchLinux

Se segui queste regole, ArchLinux non si romperà e non avrà problemi di dipendenza tra PACMAN e PIP.

Spero sia utile!



1

Oltre alle altre risposte qui, controlla il python-virtualenvpacchetto. Potrebbe essere molto utile se stai sviluppando diversi progetti con dipendenze diverse con numeri di versione non corrispondenti.

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

Attenzione anche che ci sono due varianti di pip e virtualenv. Uno per Python 2 e uno per Python 3. Se l'installazione non riesce con un errore di sintassi, potresti provare con la versione sbagliata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.