4.5. Embalagem de Python 3 RPMs
A maioria dos projetos Python usa Setuptools para embalagem, e define as informações de embalagem no arquivo setup.py
. Para mais informações sobre embalagens do Setuptools, consulte a documentação do Setuptools.
Você também pode embalar seu projeto Python em um pacote RPM, que oferece as seguintes vantagens em comparação com o pacote Setuptools:
- Especificação das dependências de um pacote em outras RPMs (mesmo não-Python)
Assinatura criptográfica
Com a assinatura criptográfica, o conteúdo dos pacotes de RPM pode ser verificado, integrado e testado com o resto do sistema operacional.
4.5.1. Descrição típica do arquivo SPEC para um pacote Python RPM Copiar o linkLink copiado para a área de transferência!
Um arquivo RPM SPEC para projetos Python tem algumas especificidades em comparação com arquivos SPEC não-Python RPM. Mais notavelmente, um nome de qualquer pacote RPM de uma biblioteca Python deve sempre incluir o prefixo python3
.
Outras especificações são mostradas no seguinte arquivo da SPEC example for the python3-detox
package. Para a descrição de tais especificidades, veja as notas abaixo do exemplo.
- 1
- A macro modname contém o nome do projeto Python. Neste exemplo, ele é
detox
. - 2
- Ao embalar um projeto Python em RPM, o prefixo
python3
sempre precisa ser adicionado ao nome original do projeto. O nome original aqui édetox
e o name of the RPM épython3-detox
. - 3
- BuildRequires especifica quais pacotes são necessários para construir e testar este pacote. No BuildRequires, inclua sempre itens fornecendo ferramentas necessárias para a construção de pacotes Python:
python36-devel
epython3-setuptools
. O pacotepython36-rpm-macros
é necessário para que os arquivos com/usr/bin/python3
shebangs sejam automaticamente alterados para/usr/bin/python3.6
. Para maiores informações, veja Seção 4.5.4, “Manuseio de hashbangs em scripts Python”. - 4
- Cada pacote Python requer alguns outros pacotes para funcionar corretamente. Tais pacotes também precisam ser especificados no arquivo da SPEC. Para especificar o dependencies, você pode usar a macro %python_enable_dependency_generator para usar automaticamente as dependências definidas no arquivo
setup.py
. Se um pacote tem dependências que não são especificadas usando Setuptools, especifique-as dentro das diretivas adicionaisRequires
. - 5
- As macros %py3_build e %py3_install executam os comandos
setup.py build
esetup.py install
, respectivamente, com argumentos adicionais para especificar os locais de instalação, o intérprete a utilizar e outros detalhes. - 6
- A seção check fornece uma macro que executa a versão correta do Python. A macro %{__python3} contém um caminho para o intérprete Python 3, por exemplo
/usr/bin/python3
. Recomendamos usar sempre a macro em vez de um caminho literal.