Python Language
setup.py
Buscar..
Parámetros
Parámetro | Uso |
---|---|
name | Nombre de su distribución. |
version | Cadena de versión de su distribución. |
packages | Lista de paquetes de Python (es decir, directorios que contienen módulos) para incluir. Esto se puede especificar manualmente, pero en su setuptools.find_packages() se suele usar una llamada a setuptools.find_packages() . |
py_modules | Lista de módulos de Python de nivel superior (es decir, archivos .py individuales) para incluir. |
Observaciones
Para más información sobre el embalaje de python, consulte:
Para escribir paquetes oficiales hay una guía de usuario de empaquetado .
Propósito de setup.py
El script de configuración es el centro de toda actividad en la construcción, distribución e instalación de módulos utilizando los Distutils. Su propósito es la correcta instalación del software.
Si todo lo que quiere hacer es distribuir un módulo llamado foo, contenido en un archivo foo.py, su secuencia de comandos de instalación puede ser tan simple como esto:
from distutils.core import setup
setup(name='foo',
version='1.0',
py_modules=['foo'],
)
Para crear una distribución de origen para este módulo, debe crear un script de configuración, setup.py, que contenga el código anterior, y ejecutar este comando desde una terminal:
python setup.py sdist
sdist creará un archivo de archivo (por ejemplo, tarball en Unix, archivo ZIP en Windows) que contiene su script de configuración setup.py y su módulo foo.py. El archivo comprimido se llamará foo-1.0.tar.gz (o .zip) y se descomprimirá en un directorio foo-1.0.
Si un usuario final desea instalar su módulo foo, todo lo que tiene que hacer es descargar foo-1.0.tar.gz (o .zip), descomprimirlo y, desde el directorio foo-1.0, ejecutar
python setup.py install
Agregando scripts de línea de comandos a su paquete de Python
Los guiones de línea de comando dentro de los paquetes de python son comunes. Puede organizar su paquete de tal manera que cuando un usuario instala el paquete, el script estará disponible en su ruta.
Si tenía el paquete de greetings
que tenía la secuencia de comandos script hello_world.py
.
greetings/
greetings/
__init__.py
hello_world.py
Puedes ejecutar ese script ejecutando:
python greetings/greetings/hello_world.py
Sin embargo si quieres correrlo así:
hello_world.py
Puede lograr esto agregando scripts
a su setup()
en setup.py
esta manera:
from setuptools import setup
setup(
name='greetings',
scripts=['hello_world.py']
)
Cuando instale el paquete de saludos ahora, se agregará a su ruta hello_world.py
.
Otra posibilidad sería agregar un punto de entrada:
entry_points={'console_scripts': ['greetings=greetings.hello_world:main']}
De esta manera solo tienes que ejecutarlo como:
greetings
Usando metadatos de control de fuente en setup.py
setuptools_scm
es un paquete oficialmente bendecido que puede usar metadatos de Git o Mercurial para determinar el número de versión de su paquete, y encontrar paquetes de Python y datos de paquetes para incluir en ellos.
from setuptools import setup, find_packages
setup(
setup_requires=['setuptools_scm'],
use_scm_version=True,
packages=find_packages(),
include_package_data=True,
)
Este ejemplo utiliza ambas características; para usar solo los metadatos de SCM para la versión, reemplace la llamada a find_packages()
con su lista de paquetes del manual, o para usar solo el buscador de paquetes, elimine use_scm_version=True
.
Añadiendo opciones de instalación
Como se vio en ejemplos anteriores, el uso básico de este script es:
python setup.py install
Pero hay aún más opciones, como instalar el paquete y tener la posibilidad de cambiar el código y probarlo sin tener que volver a instalarlo. Esto se hace usando:
python setup.py develop
Si desea realizar acciones específicas como compilar una documentación de Sphinx o crear un código fortran , puede crear su propia opción como esta:
cmdclasses = dict()
class BuildSphinx(Command):
"""Build Sphinx documentation."""
description = 'Build Sphinx documentation'
user_options = []
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
import sphinx
sphinx.build_main(['setup.py', '-b', 'html', './doc', './doc/_build/html'])
sphinx.build_main(['setup.py', '-b', 'man', './doc', './doc/_build/man'])
cmdclasses['build_sphinx'] = BuildSphinx
setup(
...
cmdclass=cmdclasses,
)
initialize_options
y finalize_options
se ejecutarán antes y después de la función de run
, tal como lo sugieren sus nombres.
Después de eso, podrás llamar a tu opción:
python setup.py build_sphinx