command line

Come posso verificare se un modulo è installato in Python e installarlo se necessario?

Nel terminale,dopo aver avviato Python,come faccio a sapere quali sono i moduli presenti in python? Supponiamo che debba imparare i moduli NumPy e SciPy.

  • Come posso installarlo se non è già installato?
  • Come faccio a sapere se è già installato?

Come sapere se un modulo Python è installato o meno nel sistema: puoi fare un test molto semplice nel terminale,

$ python -c "import math"
$ echo $?
0                                # modulo matematico esiste nel sistema

$ python -c "import numpy"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named numpy
$ echo $?
1                                # Il modulo numpy non esiste nel sistema

Come posso installarlo se non è già installato?

Puoi installare un modulo specifico scaricando i rispettivi pacchetti dal repository, ad esempio puoi installare scipy come,

sudo apt-get install python-scipy ## for Python2
sudo apt-get install python3-scipy ## for Python3

In alternativa puoi anche installare un modulo python usando python-pip come suggerito da Zack Titan nel commento qui sotto , Per installare numpy puoi usare

pip install numpy

Avvertenza: si consiglia vivamente di installare i moduli python utilizzando solo il repository ufficiale di Ubuntu e di non utilizzare il metodo pip comesuperutente (cioè come root o usando sudo ). In alcuni casi potrebbe lasciare il tuo sistema inutilizzabile interrompendo il sistema Python.

Come installare i pacchetti usando pip nell'ambiente virtuale locale.




Nel caso in cui non desideriamo importare involontariamente un modulo in questione (cosa che accadrebbe in un'istruzione try ) possiamo utilizzare sys.modules per testare i moduli che sono installati e sono stati importati in precedenza.

Nel problema della shell python:

>>> import sys

Quindi verificare i moduli installati:

>>> 'numpy' in sys.modules
True
>>> 'scipy' in sys.modules
False

Si noti che solo i moduli che sono stati importati prima danno True in questo test, tutti gli altri moduli (anche se installati) risultano False.

Un'altra alternativa per try un'istruzione import nella console python è chiamare la funzione help() integrata. Questo non fornirà una documentazione per i moduli non installati, ad es

>>> help('scipy')
no Python documentation found for 'scipy'

L'output di documenti di aiuto molto lunghi dei moduli installati può essere interrotto conQ.

Ora per installare i moduli mancanti si consiglia di utilizzare la gestione dei pacchetti di Ubuntu (e non il modo pip di Python) perché abbiamo bisogno dell'accesso come root e anche per evitare di rovinare il nostro sistema fortemente dipendente da Python. Per il modulo in questione questo sarebbe ad esempio:

sudo apt-get install python-scipy ## for Python2
sudo apt-get install python3-scipy ## for Python3

Dopo l'installazione, possiamo aggiungerli al dizionario sys.modules importandoli una volta.