Usando o pip, é possível descobrir qual versão de um pacote está atualmente instalada?
Eu sei, pip install XYZ --upgrade
mas estou me perguntando se existe algo parecido pip info XYZ
. Caso contrário, qual seria a melhor maneira de saber qual versão estou usando atualmente.
show
comando no pip: github.com/pypa/pip/issues/33Respostas:
A partir do pip 1.3 , existe um
pip show
comando.Nas versões mais antigas,
pip freeze
egrep
deve fazer o trabalho corretamente.fonte
save
nome.pip show pip
para obter as informações da versão do pip, e nãopip --version
como eu esperava.pip freeze
tem a vantagem de mostrar corretamente as versões editáveis do check-out do VCS, enquantopip show
não.Acabei de enviar uma solicitação pull no pip com o aprimoramento Hugo Tavares disse:
(specloud como exemplo)
fonte
O Pip 1.3 agora também possui um comando list :
fonte
pip list
são genéricos e__version__
não são. Eu também viversion()
eget_version()
para o importado.e com - outdated como argumento extra, você obterá as versões Atual e Mais Recente dos pacotes que você está usando:
Então, combinando com a resposta de AdamKG:
Verifique também o pip-tools : https://github.com/nvie/pip-tools
fonte
Você também pode instalar
yolk
e executar, oyolk -l
que também fornece uma saída agradável. Aqui está o que eu ganho pelo meu pequeno virtualenv:fonte
Você pode usar o comando grep para descobrir.
Exemplo:
mostrará apenas as versões.
fonte
A maneira mais fácil é esta:
fonte
__version__
em seu código-fonte. Muitos pacotes não.import
e a saída depip freeze
.Há também uma ferramenta chamada
pip-check
que fornece uma visão geral rápida de todos os pacotes instalados e seus status de atualização:Eu não o usei; apenas tropeçou nele e esta questão SO em rápida sucessão, e desde que não foi mencionado ...
fonte
No Windows, você pode emitir comandos como:
Resultado:
fonte
A função python retornando apenas a versão do pacote em um formato legível por máquina:
Antes do python 3.8:
O equivalente do bash (aqui também chamado de python) seria muito mais complexo (mas mais robusto - veja o cuidado abaixo):
Uso da amostra:
Observe que, nos dois casos, o
pkg_name
parâmetro deve conter o nome do pacote no formato retornado porpip freeze
e não como usado duranteimport
, por exemplo,scikit-learn
nãosklearn
ouFlask-Caching
nãoflask_caching
.Observe que, embora invocar
pip freeze
na versão bash possa parecer ineficiente, apenas esse método se mostra suficientemente robusto para empacotar peculiaridades e inconsistências de nomes de pacotes (por exemplo, sublinhados x traços, maiúsculas x maiúsculas grandes e abreviações comosklearn
vsscikit-learn
).Cuidado: em ambientes complexos, ambas as variantes podem retornar números de versão surpresa, inconsistentes com o que você realmente pode obter durante
import
.Um desses problemas surge quando há outras versões do pacote ocultas em uma subpasta de usuário
site-packages
. Como ilustração dos perigos do uso,version()
aqui está uma situação que encontrei:Outro problema é ter alguns pacotes instalados pelo conda no mesmo ambiente. Se eles compartilharem dependências com seus pacotes instalados pelo pip e as versões dessas dependências diferirem, você poderá obter atualizações das dependências instaladas pelo pip.
Para ilustrar, a versão mais recente
numpy
disponível no PyPI em 04-01-2020 foi a 1.18.0, enquanto oconda-forge
canal da Anaconda tinha apenas a versão 1.17.3numpy
como a mais recente. Portanto, quando você instalava umbasemap
pacote com o conda (como o segundo), seu pip-instalado anteriormentenumpy
seria rebaixado pelo conda para 1.17.3 e a versão 1.18.0 ficaria indisponível para aimport
função. Nesse caso,version()
estaria certo epip freeze
/conda list
errado:fonte
importlib.metadata.version('NameOfProject')
? docs.python.org/3/library/…from importlib_metadata import version; version('Flask-Caching')
python -c "import pkg_resources; print(pkg_resources.get_distribution('lightgbm').version)"
?version()
ainda retorna a mais antiga (2.2.3). Você pode replicar esse resultado instalando as duas versões com a--user
opção, mas preservando manualmente alightgbm-2.2.3.dist-info
pasta, para reuni-las, conforme listado acima (o pip normalmente o remove - até que não o faça).O pip show funciona em python 3.7:
fonte
Para fazer isso usando o código Python:
Usando
importlib.metadata.version
Python ≥3,8
Python ≤3,7
(usando
importlib_metadata.version
)Usando
pkg_resources.Distribution
Creditado aos comentários de sinoroc e mirekphd .
fonte
Para Windows, você pode
abra cmd e digite python, pressione enter.
digite a importação e pressione enter.
digite ._version__ e pressione enter.
Como você pode ver na captura de tela aqui, estou usando este método para verificar a versão do módulo serial.
fonte
Em questão, não é mencionado qual usuário do SO está usando (Windows / Linux / Mac)
Como existem algumas respostas que funcionarão perfeitamente no Mac e Linux.
O comando abaixo pode ser usado caso o usuário esteja tentando encontrar a versão de um pacote python no Windows.
No PowerShell, use o comando abaixo:
pip list | findstr <PackageName>
Exemplo:-
pip list | findstr requests
Resultado :
requests 2.18.4
fonte