Acabei de instalar os módulos python: construct
e statlib
com o setuptools
seguinte:
# Install setuptools to be able to download the following
sudo apt-get install python-setuptools
# Install statlib for lightweight statistical tools
sudo easy_install statlib
# Install construct for packing/unpacking binary data
sudo easy_install construct
Quero poder (programaticamente) verificar suas versões. Existe um equivalente ao que python --version
eu possa executar na linha de comando?
Minha versão do python é 2.7.3
.
pip list
Respostas:
Sugiro usar pip no lugar de easy_install . Com o pip, você pode listar todos os pacotes instalados e suas versões com
Na maioria dos sistemas Linux, você pode canalizar isso para
grep
(oufindstr
no Windows) para encontrar a linha do pacote específico em que está interessado:Para um módulo individual, você pode tentar o
__version__
atributo , no entanto, existem módulos sem ele:Por fim, como os comandos em sua pergunta são prefixados
sudo
, parece que você está instalando no ambiente global de python. Recomendamos vivamente que olhe para os gerenciadores de ambiente virtual python , por exemplo virtualenvwrapperfonte
pip show lxml | grep Version
; isso funcionará muito mais rápido, pois inspeciona apenas um único pacote.pip list | grep lxml
grep
Windows? Desde o congelamento do pip | O grep lxml não funciona no windwos.pip list | findstr lxml
Podes tentar
fonte
inspect
) não possuem um__version__
atributo.serial.VERSION
. Talvez há alguns outros módulos comumente utilizados, bem, que não são seguintes PEP 0396: python.org/dev/peps/pep-0396print(contruct.__version__)
se estiver usando Python 3. *Use o
pkg_resources
módulo distribuído com asetuptools
biblioteca. Observe que a string que você passa para oget_distribution
método deve corresponder à entrada PyPI.e se você quiser executá-lo na linha de comando, você pode:
Observe que a string que você passa para o
get_distribution
método deve ser o nome do pacote, conforme registrado no PyPI, não o nome do módulo que você está tentando importar.Infelizmente, estes nem sempre são os mesmos (por exemplo, você faz
pip install memcached
, masimport memcache
).fonte
__version__
.construct.version.full_version
pkg_resources.get_distrinbution
nem sempre funciona também.DistributionNotFound
Emite alguma exceção com a mensagem de erro como: "A distribuição 'the_package_name' não foi encontrada e é exigida pelo aplicativo"get_distribution
método #Eu acho que isso pode ajudar, mas primeiro instale o
show
pacote para executarpip show
e use show para encontrar a versão!fonte
pip: error: No command by the name pip show (maybe you meant "pip install show")
pip show PACKAGE | awk '/^Version: / {sub("^Version: ", ""); print}'
. Provavelmente, você pode se dar bem com um script AWK mais simples, mas o mencionado acima será mais seguro para qualquer caso extremos.pip show
foi implementado no pip 1.2.1.post1 . Você está usando uma versão terrivelmente datada do pip, portanto, não é de admirar que esteja tendo problemas! Atualmente, estou executando o pip 7.1.2 . Se algo estiver impedindo a atualização, você sempre pode instalá-lo localmente ou em um virtualenv.A melhor maneira de fazer isso é:
Para os detalhes de pacote específico
pip show <package_name>
Para mais detalhes:
>>> pip help
pip
deve ser atualizado para fazer isso.No Windows, o comando recomendado é:
fonte
pip show scikit-learn
vez depip show sklearn
. sklearn é curto formulário usado durante a importação, não reconhece diretamente empip
uma vezscikit-learn
é o pacote completo aprender a nãosklearn
Em python3 com colchetes ao redor da impressão
fonte
__version__
atributo.print
, assim como o(2)+(3)
avalia5
. Quando você tem uma vírgula entre parênteses, as coisas podem ficar um pouco mais interessantes, emboraprint
, ainda funcione, mais ou menos.module.__version__
é uma boa primeira coisa a tentar, mas nem sempre funciona.Se você não deseja desembolsar e está usando o pip 8 ou 9, ainda pode usar
pip.get_installed_distributions()
para obter versões no Python:update: a solução aqui funciona no pip 8 e 9, mas no pip 10 a função foi movida de
pip.get_installed_distributions
parapip._internal.utils.misc.get_installed_distributions
para indicar explicitamente que não é para uso externo. Não é uma boa ideia confiar nisso se você estiver usando o pip 10+.fonte
pip
, isso sempre funcionará.As respostas anteriores não resolveram meu problema, mas esse código:
fonte
__version__
se não definida. Se não houver__version__
, você não receberá resultado para o pacote que deseja.__version__
atributo, que é o padrão ( python.org/dev/peps/pep-0396/#specification ), é impossível saber onde e como a versão é incluída sem investigação manual.Você pode usar
importlib_metadata
biblioteca para isso.Se você estiver em python
<3.8
, primeiro instale-o com:Desde python
3.8
ele está incluído na biblioteca padrão.Em seguida, para verificar a versão de um pacote (neste exemplo
lxml
), execute:Lembre-se de que isso funciona apenas para pacotes instalados a partir do PyPI. Além disso, você deve passar um nome de pacote como argumento para o
version
método, em vez de um nome de módulo que esse pacote fornece (embora eles geralmente sejam os mesmos).fonte
Use
dir()
para descobrir se o módulo possui algum__version__
atributo.fonte
Se os métodos acima não funcionarem, vale a pena tentar o seguinte em python:
Consulte Obter versão do Tornado Python?
Note, o
.version
trabalhou para mim em alguns outros além do furacão também.fonte
primeiro adicione python, pip às suas variáveis de ambiente. para que você possa executar seus comandos no prompt de comando. então simplesmente dê python comando . depois importe o pacote
->
import scrapy
depois imprima o nome da versão
->
print(scrapy.__version__)
Isso definitivamente funcionará
fonte
__version__
atributo.pip freeze
<package> .__ version_ funcionado. Obrigado por publicar.Supondo que estamos usando o Jupyter Notebook (se estiver usando o Terminal, solte os pontos de exclamação):
1) se o pacote (por exemplo, xgboost) foi instalado com o pip :
2) se o pacote (por exemplo, caffe) foi instalado com o conda :
fonte
Alguns módulos não têm
__version__
atributo, portanto, a maneira mais fácil é verificar o terminal:pip list
fonte
Na versão Python 3.8, há um novo
metadata
módulo noimportlib
pacote, que também pode fazer isso.Aqui está um exemplo dos documentos:
fonte
Sugiro abrir um
python
shell no terminal (na versão python que você está interessado), importar a biblioteca e obter seu__version__
atributo.Nota 1: Devemos considerar a versão python . Se instalamos versões diferentes do python, temos que abrir o terminal na versão python em que estamos interessados. Por exemplo, abrir o terminal com
python3.8
can (certamente fornecerá) fornecer uma versão diferente de uma biblioteca do que abrir compython3.5
oupython2.7
.Nota 2: Nós evitar o uso da
print
função , porque o seu comportamento depende python2 ou python3. Não precisamos dele, o terminal mostrará o valor da expressão.fonte
Isso também funciona no Jupyter Notebook no Windows! Desde que o Jupyter seja iniciado a partir de uma linha de comando compatível com o bash, como Git Bash (MingW64), as soluções fornecidas em muitas das respostas podem ser usadas no Jupyter Notebook nos sistemas Windows com um pequeno ajuste.
Estou executando o Windows 10 Pro com o Python instalado via Anaconda, e o código a seguir funciona quando inicio o Jupyter via Git Bash (mas não quando inicio no prompt do Anaconda).
O ajuste: adicione um ponto de exclamação (
!
) na frentepip
para torná-lo!pip
.fonte
Programa python rápido para listar todos os pacotes (você pode copiá-lo para requirements.txt )
A saída seria semelhante a:
fonte
(consulte também https://stackoverflow.com/a/56912280/7262247 )
Achei bastante confiável usar as várias ferramentas disponíveis (incluindo a melhor
pkg_resources
mencionada pela resposta de Jakub Kukul ), pois a maioria delas não cobre todos os casos . Por exemploComo precisávamos de uma maneira confiável de obter a versão de qualquer pacote, módulo ou submódulo, acabei escrevendo o getversion . É bastante simples de usar:
Veja a documentação para detalhes.
fonte
Para obter uma lista de módulos não padrão (pip) importados no módulo atual:
Resultado:
Nota:
Esse código foi criado a partir de soluções nesta página e em Como listar módulos importados?
fonte
Em suma:
(Ele fornecerá todas as bibliotecas junto com os detalhes da versão).
E:
(Ele fornece detalhes completos da biblioteca).
fonte
Com base na resposta de Jakub Kukul encontrei uma maneira mais confiável de resolver esse problema.
O principal problema dessa abordagem é que requer que os pacotes sejam instalados "convencionalmente" (e isso não inclui o uso de
pip install --user
) ou estejam no PATH do sistema na inicialização do Python.Para contornar isso, você pode usar
pkg_resources.find_distributions(path_to_search)
. Isso basicamente procura por distribuições que seriam importáveis sepath_to_search
estivessem no sistema PATH.Podemos iterar através deste gerador como este:
Isso retornará um dicionário com módulos como chaves e sua versão como valor. Essa abordagem pode ser estendida para muito mais que o número da versão.
Obrigado a Jakub Kukul por apontar para a direção certa
fonte
Escrevendo esta resposta para usuários do Windows. Conforme sugerido em todas as outras respostas, você pode usar as instruções como:
Porém, existem alguns módulos que não imprimem sua versão mesmo após o uso do método acima. Então, o que você pode simplesmente fazer é:
fonte
Você pode tentar isso:
Isso produzirá todos os pacotes com suas versões. Resultado
fonte
você pode instalar primeiro um pacote como este e depois verificar sua versão
deve fornecer a versão do pacote
fonte