No terminal, depois de iniciar o Python, como vou saber quais são os módulos presentes no python? Suponha que eu precise aprender os módulos NumPy e SciPy.
- Como vou instalá-lo se não estiver instalado?
- Como vou saber se ele já está instalado?
fonte
No terminal, depois de iniciar o Python, como vou saber quais são os módulos presentes no python? Suponha que eu precise aprender os módulos NumPy e SciPy.
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 # math module exists in system
$ python -c "import numpy"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named numpy
$ echo $?
1 # numpy module does not exist in system
Você pode instalar um módulo específico baixando os respectivos pacotes do repositório, por exemplo, pode instalarscipy
como,
sudo apt-get install python-scipy ## for Python2
sudo apt-get install python3-scipy ## for Python3
Como alternativa Você também pode instalar um módulo python usando python-pip
o sugerido por Zack Titan no comentário abaixo : Para instalar, numpy
você pode usar
pip install numpy
Aviso: É altamente recomendável instalar python-modules usando apenas o repositório oficial do Ubuntu e não usar o pip
método como superusuário (ou seja, como root
ou usando sudo
). Em alguns casos, ele pode deixar seu sistema inutilizável, quebrando o python do sistema.
vpython
você precisa instalá-lo comosudo apt-get install python-visual libgtkglextmm-x11-1.2-dev
sudo pip
; pode quebrar o python do sistema. Use o apt-get para instalar pacotes para o python do sistema. Você pode usarpip --user
option ou virtualenv para instalar os pacotes Python por conta própria.Caso não desejemos importar indesejadamente um módulo em questão (o que aconteceria em uma
try
declaração), podemos utilizá-losys.modules
para testar módulos instalados e importados anteriormente.No problema do shell python:
Em seguida, teste os módulos instalados:
Observe que apenas os módulos que foram importados antes
True
desse teste, todos os outros módulos (mesmo que instalados) resultam emFalse.
Outra alternativa para
try
umaimport
declaração no console python é chamar ahelp()
função embutida. Isso não fornecerá uma documentação para módulos não instalados, por exemplo,A saída de documentos de ajuda muito longos dos módulos instalados pode ser interrompida Q.
Agora, para instalar os módulos ausentes, é recomendável usar o gerenciamento de pacotes do Ubuntu (e não o caminho do Python), porque precisamos de acesso root e também para evitar atrapalhar nosso sistema fortemente dependente de Python. Para o módulo em questão, isto seria, por exemplo:
Após a instalação, podemos adicioná-los ao
sys.modules
dicionário importando-os uma vez.fonte
sys.modules
contém apenas módulos que já foram importados , portanto, não é uma maneira confiável de testar se um módulo foi instalado. O teste mais confiável é usartry/except
e prender oImportError
, como vários outros já sugeriram.sys.modules
é totalmente irrelevante e acho que qualquer menção a ele é enganosa. Mas talvez seja só eu.sys.modules
não há nenhuma ajuda aqui.Outra maneira é o
pkgutil
módulo. Funciona com o Python 2 e 3:Você precisa substituir
module
pelo nome do seu módulo, exemplo:fonte
print()
também funcionará bem em Python 2; É tratado como uma sintaxe do grupo com parênteses e não tem efeitos colaterais. Somente quando você deseja adicionar vários itens (comoprint('a', 'b')
ele será tratado como umtuple
, no qual você precisafrom __future__ import print_function
, mas não é aplicável nesse caso, você pode simplesmente escrever um código compatível com a frente adicionando os parâmetros) (eu testei minhas alterações em Python 2 e 3).exit
para que possa ser usado no contexto do shell:python -c 'import pkgutil; exit(0 if pkgutil.find_loader("math") else 2)'
Eu sei que o OP originalmente pediu uma solução depois de iniciar o Python, mas fora do python eu uso
pip
. No ubuntu:,sudo apt-get install python-pip
se ainda não estiver instalado.Para ver quais módulos de terceiros estão disponíveis, basta executar:
Ou até
E ambos mostrarão todos os módulos instalados e suas versões.
Se o módulo que você procura não estiver instalado, na maioria das vezes você poderá instalá-lo facilmente com o pip:
Se você não tiver certeza da existência de um módulo ou qual é o nome do PyPI, use
pip search
:fonte
pip show <module-name>
mostrará se um pacote está instalado, por exemplopip show numpy
.Você pode colocar o código dentro
try
,except
bloco.fonte
Para fornecer outra resposta, para fins de conclusão:
Você pode (ab) usar a
-m
opção Na página de manual do Python:O que nos dará:
Mas para módulos inexistentes, isso nos dará:
Poderíamos usar
grep
para corresponder a isso:Isso é um pouco hack-ish, e não o que
-m
foi planejado; mas é o método que requer menos digitação, se você quiser um teste rápido :-)fonte
grep -q
torna desnecessário o redirecionamento para nulo./dev/null
longo dos anos, digitei muitos redirecionamentos inúteis : - /Eu escrevi um exemplo em Python:
fonte
Verificação do shell oneliner (útil para provisionamento)
Descobri que, para tornar meu provisionamento de infraestrutura ** idempotente, preciso verificar se há um pacote do shell em um oneliner. Eu desenvolvi a resposta do @ cuonglm. Eu tive que reverter o
1
e0
porque estou produzindo um status de saída em vez de imprimir uma string.Você pode substituir o nome
sys.argv[1]
com aspas simples do seu pacote, mas, para meus scripts de provisionamento, gosto da legibilidade de tê-lo no final.** Percebo que chef , fantoche e ansible têm todos plugins para gerenciar pacotes python, mas você pode se encontrar em uma situação como eu em que você está usando uma versão desatualizada e não deseja usar plug-ins obsoletos.
fonte
Pode-se também usar
pydoc modules
, que pode ser filtrado comgrep
para encontrar um módulo específico. A saída é exibida em formato de coluna. A única desvantagem dessa abordagem é que ela também incluirá arquivos python no diretório de trabalho atual. No entanto, eu mesmo o uso na maioria das vezes e é uma das abordagens mais citadas nesta questão relacionada: https://stackoverflow.com/q/739993/3701431fonte
No Shell do Ubuntu, por padrão, o bash, tão simples quanto
Exemplos
E, se você tiver dúvidas sobre o caso (embora eu ache que todos os nomes de pacotes sejam sempre minúsculos):
fonte
No momento em que escrevi isso,
pip show ...
parece ser a maneira mais fácil: https://pip.pypa.io/en/stable/reference/pip_show/Mas é silencioso (ou seja, não retorna nada) quando o pacote não está instalado.
fonte