command line

Como posso verificar se um módulo está instalado em Python,e instalá-lo se necessário

Em terminal,depois de iniciar Python,como saberei quais são os módulos presentes em python? Suponhamos que preciso de aprender os módulos NumPy e SciPy.

  • Como o instalarei se não estiver instalado?
  • Como saberei se já está instalado?

Como saber se um módulo python está instalado ou não no sistema: Você pode fazer um teste muito fácil no terminal,

$ python -c "import math"
$ echo $?
0                                # módulo matemático existe no sistema

$ python -c "import numpy"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
ImportError: No module named numpy
$ echo $?
1                                # módulo numpy não existe no sistema

Como o instalarei se não estiver instalado

Você pode instalar um módulo específico baixando os respectivos pacotes do repositório, por exemplo, você pode instalar o scipy como,

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

Alternativamente , você também pode instalar um módulo python usando python-pip como sugerido por Zack Titan no comentário abaixo , Para instalar o numpy , você pode usar

pip install numpy

Aviso: É altamente recomendável instalar módulos python usando apenas o repositório oficial do Ubuntu e não usar o método pip como superusuário (ou seja, como root ou usando sudo ). Em alguns casos, pode deixar seu sistema inutilizável quebrando o python do sistema.

Como instalar pacotes usando pip no ambiente virtual local.




Caso não queiramos importar um módulo em questão de forma indesejada (o que aconteceria em uma instrução try ) podemos fazer uso de sys.modules para testar módulos que estão instalados e foram importados antes.

Na edição da concha da pitão:

>>> import sys

Em seguida,testar para módulos instalados:

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

Observe que apenas os módulos que foram importados antes dão True neste teste, todos os outros módulos (mesmo se instalados) resultam em False.

Outra alternativa para try uma instrução de import ação no console python é chamar a função help() embutida. Isso não fornecerá uma documentação para módulos não instalados, por exemplo

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

A saída de documentos de ajuda muito longos de módulos instalados pode ser interrompida comQ.

Agora, para instalar os módulos ausentes, é recomendável usar o gerenciamento de pacotes do Ubuntu (e não o modo pip do Python) porque precisamos de acesso root e também para evitar bagunçar nosso sistema fortemente dependente do Python. Para o módulo em questão, isso seria, por exemplo:

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

Após a instalação, podemos adicioná-los ao dicionário sys.modules importando-os uma vez.