Qual é a lista completa de argumentos de palavras-chave que a função setuptools.setup () aceita? (Inclua uma descrição do que cada argumento significa, se possível.)
Eu olhei por toda a web e não acredito que isso não esteja documentado.
Encontrei estes documentos:
- https://docs.python.org/3.7/distutils/setupscript.html#additional-meta-data
- https://setuptools.readthedocs.io/en/latest/setuptools.html#new-and-changed-setup-keywords
Mas mesmo quando eu os combino, faltam outros argumentos, como
- scripts
- pacotes
- fornece
- obsoletos
... e não sei quantos argumentos estão faltando.
Qual é a lista completa de argumentos de palavras-chave que a função setuptools.setup () aceita?
python
pip
setuptools
distutils
easy-install
cowlinator
fonte
fonte
provides
erequires
(e, é claro, não incluindo nada adicionado pelo setuptools, porque é a documentação do distutils), e não acho que o setuptools tenha uma referência da API.Respostas:
setuptools.setup()
chamadistutils.core.setup()
e passa a si próprio**kwargs
como o único parâmetro, portanto, qualquer palavra-chave quedistutils
aceite também será aceita porsetuptools
. Se formos olhardistutils
A maioria deles está documentada aqui, mas alguns não estão incluídos na tabela: packages , package_dir , package_data , scripts , obsoletos , proviodes , py_modules e data_files .
Alguns deles também estão ausentes da
setup_keywords
tupla. E se você desejasetup_keywords
, não parece que ele seja realmente referenciado em qualquer lugar ... Mas isso é uma história para outro dia. Enfim, aqui está a lista (espero que completa).argumentos da palavra-chave distutils.core.setup ()
( Necessário : nome , versão e pelo menos um dos autores ou mantenedores )
autor:
author_email:
classificadores:
data_files :
descrição:
download_url:
palavras-chave:
licença:
longa descrição:
mantenedor:
mantenedor_e-mail:
nome:
obsoletos :
package_data :
package_dir :
pacotes :
plataformas:
fornece :
py_modules :
scripts :
url:
versão:
argumentos da palavra-chave setuptools.setup ()
Existem ainda mais argumentos que
setuptools.setup()
aceitarão, além daqueles que são usados pordistutils
.Embora seja chamado de "Palavras-chave de instalação novas e alteradas" (o que para mim sugere um registro de alterações da versão), o texto de introdução diz que esses são "argumentos de palavras-chave para setup () [que são] adicionados ou alterados por setuptools", portanto, acredito que o link realmente fornece uma lista completa. Vou adicioná-lo aqui para completar.
(Desde as
setuptools.setup()
chamadasdistutils.core.setup()
, os mesmos parâmetros são necessários : nome , versão e pelo menos um dos autores ou mantenedores )convert_2to3_doctests:
dependency_links:
eager_resources:
pontos de entrada:
exclude_package_data:
extras_require:
include_package_data:
install_requires:
namespace_packages:
package_data:
project_urls:
python_requires:
setup_requires:
test_loader:
suíte de teste:
tests_require:
use_2to3:
use_2to3_exclude_fixers :
use_2to3_fixers :
zip_safe:
Extensões
Construir uma extensão (em vez de um módulo Python puro) é mais complicado, pois requer essencialmente que você especifique os parâmetros e argumentos necessários para criar com êxito a extensão a partir dos
C
arquivos de origem. Isso é feito através daext_modules
palavra - chave, que nada mais é do que uma lista deExtension
instâncias (importáveis dedistutils.core
). Os argumentos da palavra-chave aceitos peloExtension
construtor da classe são o vetor de entrada para especificar as etapas de compilação para compilar a extensão.Como essa pergunta é
setuptools.setup()
específica, incluirei apenas a definição deext_modules
, mas a documentação daExtension
classe fornece detalhes completos. Para completar, esta é a lista de palavras-chave aceitas para oExtension
construtor:ext_modules :
Misc.
Finalmente, existem ainda mais kwargs que podem ser implementados em
setuptools.dist
outros locais, mas por algum motivo nunca foram adicionados a nenhuma documentação principal do setuptools / distutils:recursos (descontinuados):
long_description_content_type (por "Criando um README compatível com PyPI ):
provides_extras (Per PEP566, listados como "Fornece-Extra" ):
fonte
long_description_content_type
andruntime_library_dirs
econvert_2to3_doctests
?setuptools
isso inclui esses argumentos. Inicialmente, li o segundo link que você postou como significado "Novos ou alterados nesta versão do setuptools", mas olhando mais de perto, acho que realmente significa "novo ou alterado em comparação com o que está nos distutils", então acho que é realmente um Lista completa.use_2to3_exclude_fixers
elong_description_content_type
uma vez que são as duas palavras-chave parasetuptools.setup()
. Eu também acrescentoufeatures
,provides_exrtras
eext_modules
. Nalibrary_dirs
verdade, os parâmetros não são palavras-chave parasetup()
si. São palavras-chave separadas para oExtension
construtor, para as quais adicionei uma breve explicação, mas os detalhes completos provavelmente não se encaixam em uma resposta a essa pergunta, já que são especificamente sobresetuptools.setup()
kwargs.extras
mas a chamada parasetup()
é passada com a chave kwarg,extras_require
incluída nesta lista.