¿Cuál es la lista completa de argumentos de palabras clave que acepta la función setuptools.setup ()? (Incluya una descripción de lo que significa cada argumento, si es posible).
He buscado en toda la web y no puedo creer que esto no esté documentado.
Encontré estos 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
Pero incluso cuando combino estos, les faltan otros argumentos como
- guiones
- paquetes
- proporciona
- obsoletos
... y no sé cuántos argumentos más faltan.
¿Cuál es la lista completa de argumentos de palabras clave que acepta la función setuptools.setup ()?
python
pip
setuptools
distutils
easy-install
cowlinator
fuente
fuente
provides
yrequires
(y, por supuesto, no incluye nada agregado por setuptools, porque es la documentación de distutils), y no creo que setuptools tenga una referencia de API.Respuestas:
setuptools.setup()
llamadistutils.core.setup()
y pasa es**kwargs
el único parámetro, por lo que cualquier palabra clave quedistutils
acepte también será aceptada porsetuptools
. Si vamos miramosdistutils
La mayoría de estos están documentados aquí , pero algunos no están incluidos en la tabla: paquetes , package_dir , package_data , guiones , obsoletos , proviodes , py_modules y data_files .
Algunos de estos también faltan en la
setup_keywords
tupla. Y si lo buscassetup_keywords
no parece que en realidad esté referenciado en ningún lado ... Pero esa es una historia para otro día. De todos modos, aquí está la lista (con suerte completa).argumentos de palabras clave distutils.core.setup ()
( Obligatorio : nombre , versión y al menos uno del autor o mantenedor )
autor:
autor_email:
clasificadores:
data_files :
descripción:
download_url:
palabras clave:
licencia:
descripción larga:
mantenedor:
mantenedor_email:
nombre:
obsoletos :
paquete_datos :
package_dir :
paquetes :
plataformas:
proporciona :
py_modules :
guiones :
url:
versión:
argumentos de la palabra clave setuptools.setup ()
Hay incluso más argumentos que
setuptools.setup()
aceptarán, más allá de los que son utilizados pordistutils
.Aunque se llama "Palabras clave de configuración nuevas y modificadas" (que para mí sugiere un registro de cambios de versión), el texto de introducción dice que son "argumentos de palabras clave para la configuración () [que son] agregados o modificados por las herramientas de configuración", por lo que creo que el enlace realmente proporciona Una lista completa. Lo agregaré aquí para completar.
(Desde
setuptools.setup()
las llamadasdistutils.core.setup()
, los mismos parámetros son requeridos : nombre , versión , y al menos uno de autor o mantenedor )convert_2to3_doctests:
enlaces_dependencia:
recursos_eager:
puntos de entrada:
exclude_package_data:
extras_require:
include_package_data:
install_requires:
paquetes de espacio de nombres:
paquete_datos:
project_urls:
python_requires:
setup_requires:
test_loader:
Banco de pruebas:
tests_require:
use_2to3:
use_2to3_exclude_fixers :
use_2to3_fixers :
zip_safe:
Extensiones
Construir una extensión (en lugar de un módulo Python puro) es más complicado, ya que esencialmente requiere que especifique los parámetros y argumentos necesarios para construir con éxito la extensión desde los
C
archivos fuente. Esto se hace a través de laext_modules
palabra clave, que no es más que una lista deExtension
instancias (importable dedistutils.core
). Los argumentos de palabras clave aceptados por elExtension
constructor de la clase son el vector de entrada para especificar los pasos de compilación para compilar la extensión.Dado que esta pregunta se trata
setuptools.setup()
específicamente, solo incluiré la definición deext_modules
, pero la documentación de laExtension
clase proporciona detalles completos. Para completar, esta es la lista de palabras clave aceptadas para elExtension
constructor:ext_modules :
Misceláneos
Finalmente, hay incluso más kwargs que se pueden encontrar implementados en
setuptools.dist
y en otros lugares, pero por alguna razón nunca se agregaron a ninguna de las principales herramientas de configuración / distutils:características (en desuso):
long_description_content_type (Por "Crear un archivo README compatible con PyPI ):
provides_extras (por PEP566, que figuran como "Proporciona-Extra" ):
fuente
long_description_content_type
eruntime_library_dirs
yconvert_2to3_doctests
argumentos?setuptools
eso incluye esos argumentos. Inicialmente leí el segundo enlace que publicaste como "Arumentos nuevos o modificados en esta versión de setuptools", pero mirando más de cerca, creo que en realidad significa "nuevo o modificado en comparación con lo que está en distutils", así que creo que en realidad es un lista completa.use_2to3_exclude_fixers
ylong_description_content_type
ya que ambas son palabras clave parasetuptools.setup()
. También he añadidofeatures
,provides_exrtras
yext_modules
. Loslibrary_dirs
parámetros en realidad no son palabras clave ensetup()
sí mismos. Son palabras clave separadas para elExtension
constructor, para lo cual agregué una breve explicación, pero los detalles completos probablemente no encajan en una respuesta a esta pregunta, ya que se trata específicamente desetuptools.setup()
kwargs.extras
pero luego en la llamada asetup()
se pasa con la clave kwargextras_require
que se incluye en esta lista.