Como você pode obter programaticamente a lista de dependências de um pacote Python?
O padrão setup.py
tem isso documentado, mas não consigo encontrar uma maneira fácil de acessá-lo a partir do Python ou da linha de comando.
Idealmente, procuro algo como:
$ pip install somepackage --only-list-deps
kombu>=3.0.8
billiard>=3.3.0.13
boto>=2.26
ou:
>>> import package_deps
>>> package = package_deps.find('somepackage')
>>> print package.dependencies
['kombu>=3.0.8', 'billiard>=3.3.0.13', 'boto>=2.26']
Observe, não estou falando sobre importar um pacote e encontrar todos os módulos referenciados. Embora isso possa localizar a maioria dos pacotes dependentes, não seria capaz de encontrar o número de versão mínimo necessário. Isso é armazenado apenas no setup.py.
Respostas:
Além do
pip show [package name]
comando, existepipdeptree
.Apenas faça
então corra
e mostrará suas dependências em forma de árvore, por exemplo,
O projeto está localizado em https://github.com/naiquevin/pipdeptree , onde você também encontrará informações de uso.
fonte
pipdeptree
mostra as dependências de todos os pacotes instalados , não apenas as de um determinado pacote. Embora você possa filtrar sua--json
saída, ela ainda depende dos pacotes já instalados.requirements.txt
:)-p
opção de selecionar apenas alguns pacotes cujas dependências deseja explorar.pipdeptree
foi muito útil na otimizaçãorequirements.txt
.$ pipdeptree | grep -P '^\w+'
Isso gera apenas pacotes de nível superior. Mais informações aquiTente usar o
show
comandopip
, por exemplo:Atualizar (recuperar deps com a versão especificada):
fonte
Requires
seção$ pip3 show beautifulsoup4
,Requires:
parece vazio para mim - beautifulsoup4 não depende de nada?beautifulsoup4
.Algumas respostas aqui mostram pip sendo importado para uso em programas. A documentação do pip desaconselha fortemente o uso de pip .
Em vez de acessar
pkg_resources
por meio da importação do pip, você pode apenas importarpkg_resources
diretamente e usar a mesma lógica (que é, na verdade, uma das soluções sugeridas nos documentos do pip vinculados para qualquer pessoa que deseja ver as meta informações do pacote programaticamente).Se você está tendo problemas para descobrir exatamente qual é o nome do seu pacote, a
WorkingSet
instância retornada porpkg_resources.working_set
implementos__iter__
para que você possa imprimir todos eles e, com sorte, localizar o seu lá :)ie
Isso funciona com python 2 e 3 (embora você precise ajustar as instruções de impressão para python2)
fonte
(ESTA É UMA RESPOSTA LEGADO E DEVE SER EVITADA PARA VERSÕES MODERNAS DE PIP E ESQUERDA AQUI PARA REFERÊNCIA A VERSÕES DE PIP ANTERIORES) A resposta de Alex é boa (+1). Em python:
deve retornar algo como
onde twisted é o nome do pacote, que você pode encontrar no dicionário:
para listar todos eles:
deve lhe dar listas como esta:
fonte
_vendor
atributo não parece existir na versão pip19.1.1
(Editar: Tudo bem, parece ter mudado para opkg_resources
pacote na última versão python!)pip show
parte é boa, não o resto). De qualquer usopip show
, pipdeptree ou ver a resposta de Jordan Mackie usando setuptools 'pkg_resources
diretamente.Use https://libraries.io/ . É um bom lugar para explorar as dependências antes de instalar usando o pip.
Por exemplo. Digite google-cloud-storage e search, então você pode localizar a página da biblioteca ( https://libraries.io/rubygems/google-cloud-storage ). Selecione a versão para a qual deseja explorar as dependências em 'Releases' (o padrão é o mais recente). Em 'Dependências', você pode encontrar a lista de dependências e suas versões com suporte.
fonte
Tente isso de acordo com este artigo em python:
Será mostrado como:
fonte