I pacchetti Python sono collezioni di moduli (codice riutilizzabile) che estendono e migliorano le funzionalità del nucleo del linguaggio Python. Gli sviluppatori Python contribuiscono al repository ufficiale Python Package Index (PyPI), rendendo i loro pacchetti disponibili alla comunità Python sotto termini di licenza open source. La Python Packaging Authority (PyPA) gestisce il repository e mantiene un set standard di strumenti per la costruzione, la distribuzione e l’installazione dei pacchetti Python.

Sui supercomputer di ricerca dell’Indiana University, molti pacchetti di terze parti sono già installati per integrare le build Python comunemente usate. Se hai un bisogno unico di un pacchetto Python di terze parti che non è già installato, puoi usare pip o setup.py per installare il pacchetto nella tua home directory. Se sai che diversi ricercatori sono interessati ad usare un pacchetto Python che non è già installato, puoi richiedere che venga installato come pacchetto del sito per tutto il sistema.

In questa pagina:

  • Installa pacchetti Python per uso personale
    • Imposta il tuo ambiente utente
    • Installa un pacchetto usando pip
    • Installa un pacchetto usando il suo setup.py
  • Comprendere l’ordine di ricerca dei moduli

Installare pacchetti Python per uso personale

Impostare il tuo ambiente utente

Per installare pacchetti Python, devi avere Python aggiunto al tuo ambiente utente. Su Carbonate, Python è aggiunto al tuo ambiente utente per default. Su Big Red 3, o se hai precedentemente rimosso Python, usa le seguenti istruzioni per aggiungere Python al tuo ambiente utente:

  1. Controlla quali moduli sono attualmente caricati; sulla linea di comando, inserisci:
     module list
  2. Se Python non è tra la lista dei moduli attualmente caricati, usate il comando module load per aggiungerlo; per esempio:
    • Per aggiungere la versione di default, sulla linea di comando, inserire:
       module load python
    • Per aggiungere una versione non predefinita:
      1. Verificate quali versioni sono disponibili; sulla linea di comando, inserite:
         module avail python
      2. Caricare la versione preferita; sulla linea di comando, inserire (sostituire version_number con il numero della versione preferita):
         module load python/version_number
  3. Se Python è elencato tra i moduli attualmente caricati, ma preferite o avete bisogno di usare un’altra versione, dovete rimuovere il modulo attualmente caricato prima di caricare l’altra versione. Per farlo con un solo comando, usate module switch; per esempio, sulla linea di comando, inserite (sostituite current_version con il numero di versione del modulo python attualmente caricato e new_version con il numero di versione preferito):
     module switch python/current_version python/new_version

Per apportare modifiche permanenti al tuo ambiente, modifica il tuo file~/.modules. Per saperne di più, vedi Usare un file .modules nella tua home directory per salvare il tuo ambiente utente su un supercomputer di ricerca IU.

Per saperne di più sull’uso di Modules per configurare il tuo ambiente utente, vedi Usare Modules per gestire il tuo ambiente software sui supercomputer di ricerca IU.

Installare un pacchetto usando pip

Lo strumento di gestione dei pacchetti pip, uno degli strumenti standard mantenuti dalla Python Package Authority (PyPA), è lo strumento raccomandato per installare pacchetti dal repository Python Package Index (PyPI).

Per installare un pacchetto dal repository PyPI (per esempio, foo), usate il comando pip install con il flag --user; per esempio:

L’opzione --user dirige pip a scaricare e scompattare la distribuzione sorgente del vostro pacchetto (per esempio, foo) nella directory utente site-packages per il Python in esecuzione; per esempio:

 ~/.local/lib/python3.6/site-packages/foo

Python cerca automaticamente questa directory per i moduli, quindi non è necessario aggiungere questo percorso alla variabile ambientale PYTHONPATH.

Se ometti l’opzione --user, pip cercherà di installare il tuo pacchetto nella directory globale site-packages (dove non hai i permessi necessari); come risultato, l’installazione fallirà.

Per maggiori informazioni sull’uso di pip, vedi la pagina pip install nella Guida utente di pip.

Installa un pacchetto usando il suo script setup.py

Per installare un pacchetto Python da una fonte diversa dal repository PyPI, puoi scaricare e decomprimere la distribuzione sorgente da solo, e poi usare il suo script setup.py per installare il pacchetto nella directory dell’utente site-packages:

L’opzione --user dirige setup.py ad installare il pacchetto (per esempio, foo) nella directory utente site-packages per il Python in esecuzione; per esempio:

 ~/.local/lib/pythonX.Y/site-packages/foo

Python cerca automaticamente questa directory per i moduli, quindi non è necessario aggiungere questo percorso alla variabile ambientale PYTHONPATH.

Se omettete l’opzione --user, setup.py cercherà di installare il pacchetto nella directory globale site-packages (dove non avete i permessi necessari); di conseguenza, l’installazione fallirà.

In alternativa, puoi usare l’opzione --home o --prefix per installare il tuo pacchetto in una posizione diversa (dove hai i permessi necessari); per esempio, per installare il tuo pacchetto in una sottodirectory (per esempio, python-pkgs):

Nota:
Se installi il tuo pacchetto in una posizione diversa dalla directory dell’utente site-packages, dovrai aggiungere il percorso di quella directory alla tua variabile d’ambiente PYTHONPATH. Per saperne di più su PYTHONPATH, vedi PYTHONPATH e l’ordine python import di seguito.

Per maggiori informazioni sull’uso di setup.py per installare i pacchetti, vedere Installare i moduli Python (versione Legacy).

Capire l’ordine di ricerca dei moduli

Conoscere come l’interprete Python risponde alle dichiarazioni import può aiutarvi a determinare perché un particolare modulo o pacchetto non viene caricato, o perché una versione inaspettata di un pacchetto viene caricata, anche se la versione corretta è installata e il percorso della sua posizione è elencato nella vostra variabile di ambiente PYTHONPATH.

Quando Python viene lanciato, cerca i percorsi trovati in sys.path, una lista di directory che determina il percorso di ricerca dei moduli dell’interprete. La variabile sys.path è inizializzata dalle seguenti posizioni, in questo ordine:

  1. La directory che contiene lo script usato per invocare l’interprete Python (se l’interprete è invocato interattivamente o lo script è letto dallo standard input, questo primo elemento, path, rimane una stringa vuota, che indirizza Python a cercare prima i moduli nella directory di lavoro corrente)
  2. Le directory elencate in PYTHONPATH
  3. La directory site-packages specifica per la versione dell’installazione Python in esecuzione; per esempio:
     <sys.prefix>/lib/pythonX.Y/site-packages

    In questo esempio, <sys.prefix> è il percorso dell’installazione di Python in esecuzione; X.Y è il numero di versione (per esempio, 3.8) dell’installazione di Python in esecuzione.

Di default, Python importa anche il modulo site.py all’inizializzazione, che aggiunge i percorsi specifici del sito al percorso di ricerca del modulo (sys.path), incluso il percorso alla vostra directory utente site-packages nella vostra home directory; per esempio (X.Y sarà il numero di versione dell’installazione di Python in esecuzione):

 ~/.local/lib/pythonX.Y/site-packages

Come site.py aggiunge percorsi a sys.path, li analizza per i file di configurazione del percorso (.pth), che contengono ulteriori directory che vengono aggiunte a sys.path. Se una directory contiene più file .pth, site.py li processa in ordine alfabetico.

Tuttavia, alcuni file .pth contengono comandi incorporati che inseriscono voci di directory all’inizio del percorso di ricerca del modulo (prima del percorso standard della libreria). Come risultato, un modulo da una delle directory inserite verrà caricato al posto del modulo con lo stesso nome dalla directory della libreria standard. Questo può essere un comportamento indesiderato e confuso, a meno che tale sostituzione non sia prevista.

Nota:

Se le vostre richieste import sono costantemente disturbate dai file site.py e .pth, provate a invocare l’interprete Python con la -S (S maiuscola):

 python -S

Questo disabilita l’importazione automatica di site.py e, di conseguenza, gli impedisce di manipolare sys.path. Tuttavia, impedisce anche a site.py di aggiungere la vostra directory utente site-packages a sys.path. Per importare site.py senza aggiungere la vostra directory utente site-packages a sys.path, invocate Python con l’opzione -s (s minuscola):

 python -s

Per vedere quali directory Python scansiona quando date comandi import, sulla linea di comando, inserite:

 python -c "import sys; print ('\n'.join(sys.path))"

In alternativa, lanciate Python in modalità interattiva, e poi invocate gli stessi comandi in questo ordine (>>> è il prompt primario di Python):

 >>>import sys >>>print ('\n'.join(sys.path))
Nota:
La variabile sys.path è solo una lista modificabile di stringhe che potete modificare come qualsiasi altra lista Python. Evitate di modificare il primo elemento della lista (path), perché molti pacchetti assumono che si riferisca alla directory contenente lo script usato per invocare l’interprete Python.

Documenti correlati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.