Como verificar se um módulo ou pacote já está instalado em python3?

3

É necessário verificar se está instalado ou não antes de o programa ser executado.

    
por hubatrix 10.10.2015 / 19:17

6 respostas

3

Digite no shell: pydoc modules .
Isto irá listar módulos e você pode grep o módulo que você deseja.
Encontrado em stackoverflow aqui

    
por 10.10.2015 / 19:43
9

Você deve usar o comando pip list com o grep, que lista apenas os pacotes instalados (nem todos os módulos e seus vizinhos também):

pip list | grep -F package_name
    
por 10.10.2015 / 20:00
1

Se o pacote não fizer algo maluco ou demorado na importação, você pode tentar importá-lo:

if python -c "import package_name" &> /dev/null; then
    echo 'all good'
else
    echo 'uh oh'
fi
    
por 18.07.2017 / 19:11
1

Eu encontrei as respostas existentes incompletas e faltando bons exemplos suficientes. Aqui está a solução que eu decidi:

# an example checking if the pandas package is installed
if python -c 'import pkgutil; exit(not pkgutil.find_loader("pandas"))'; then
    echo 'pandas found'
else
    echo 'pandas not found'
fi

Um github do exemplo pode ser encontrado aqui: link

    
por 21.07.2018 / 19:05
1

Você também pode usar algo assim em seus scripts.

python -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader('$Package') else 1)"

O que você ganharia quando um pacote não estivesse instalado.

Package=psutil
python3 -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader('$Package') else 1)"
echo $?
1

O que você ganharia quando um pacote é instalado.

Package=requests
python3 -c "import sys, pkgutil; sys.exit(0 if pkgutil.find_loader('$Package') else 1)"
echo $?
0

Funciona em python2 e python3 e, em seguida, você instala com base no código de saída.

    
por 24.10.2018 / 05:44
0

Eu usei uma versão ligeiramente mais estrita da resposta do Anthon, para uso em um script:

pip3 list |
    grep -v "^Package *Version$" | grep -v "^-*$" |
    cut -d ' ' -f 1 |
    grep -xF "$package_name"

Os dois primeiros greps pretendem retirar as linhas de cabeçalho da saída do pip3.

O corte seleciona apenas os nomes dos pacotes (descartando os números de versão).

Em seguida, o grep final pode realizar uma pesquisa exata do $package_name relevante

Se o pacote for encontrado, ele exibirá o nome do pacote e retornará com o código de saída 0. Se você não quiser ver o nome do pacote, termine o comando com >/dev/null

    
por 07.07.2018 / 15:48