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:

Introducción

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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow