Suponha que eu queira instalar um pacote Python em todo o sistema em um sistema Debian/Devuan. Alguns pacotes PyPI têm pacotes DEB disponíveis através das fontes apt do repositório, com nomes de pacotes prefixados por python3-
(ou python-
, dependendo da versão Debian). Mas - nem todos o fazem. Agora, sempre posso lançar meu próprio pacote DEB , mas - como posso saber se meu pacote de interesse é:
- realmente faltando;
- disponível, mas com outro nome (formato mais curto, formato mais longo, nome tradicional agora alterado no PyPI etc.); ou
- disponível, mas empacotado com outros pacotes PyPI
? Existe uma regra de mapeamento simples ou algum lugar que eu possa consultar com um nome de pacote PyPI e obter o nome do pacote apt?
A maneira mais confiável de encontrar um pacote Debian que corresponda a um determinado pacote Python envolve saber como este último deve ser importado. Por exemplo, o pandasql é importado
from pandasql
; se estivesse disponível em um pacote Debian, seria lançado em/usr/lib/python3/dist-packages/pandasql
.Para determinar se tal pacote existe, instale
apt-file
se ainda não o tiver e pergunte:Se o pacote existir,
apt-file
informará seu nome; se não encontrar nada, o pacote não existe.Os pacotes binários do Python devem refletir o nome do módulo na maioria dos casos, mas há ressalvas :
A resposta honesta é que você terá que fazer suposições fundamentadas ou procurar os arquivos contidos nele. ("Suposições fundamentadas" incluem fazer coisas como
apt search …
o nome do pacote pypi)Verificando os arquivos dentro: Sinceramente, eu apenas faria a instalação do venv e deixaria que ele me mostrasse os arquivos contidos. Então, escolha um arquivo específico que pareça central e necessariamente presente, e único o suficiente, e pergunte à infraestrutura de empacotamento do Debian qual pacote contém um arquivo com esse nome. Por exemplo, para o
sigmf
pacote:Na lista de arquivos que o último comando me fornece, escolho
sigmf/sigmffile.py
. Parece que sem esse arquivo o pacote não estaria completo e também não encontraria um nome de arquivo em outro lugar.(agora você pode simplesmente
rm -rf temporary_venv
fechar esse terminal. Nada mais foi tocado.)Então,
Isso não produz resultados, portanto não há pacote contendo sigmf.