Cómo especificar dependencias al crear el archivo setup.py para un paquete de python
package (1)
Ignorar distutils
. Si desea crear un paquete que especifique las dependencias para que una herramienta como pip
salga a buscarlo, necesita basar su setup.py
en off en la parte de setuptools
.
setuptools
dependencias de setuptools
se enumeran en install_requires
, que toma una lista:
setup(name=''MyStuff'',
version=''1.0'',
install_requires=[''progressbar''],
# ...
)
Las cuales deberían ser distribuciones propias. os
y sys
son módulos incluidos con Python y no deben ser listados .
El documento de Python para "Escribir el script de instalación ( http://docs.python.org/2/distutils/setupscript.html ) menciona que las dependencias se pueden especificar en la sección
> 2.4. Relaciones entre distribuciones y paquetes
[...] Estas relaciones se pueden especificar usando argumentos de palabras clave para la función distutils.core.setup ().
Las dependencias en otros módulos y paquetes de Python se pueden especificar al proporcionar el argumento de palabra clave de requisitos a setup (). El valor debe ser una lista de cadenas. Cada cadena especifica un paquete que se requiere y, opcionalmente, qué versiones son suficientes.
Para especificar que se requiere cualquier versión de un módulo o paquete, la cadena debe consistir completamente en el nombre del módulo o paquete. Los ejemplos incluyen ''mymodule'' y ''xml.parsers.expat''.
[...]
Teniendo en cuenta esta información bastante escasa sin un ejemplo, solo quiero asegurarme de que lo hago bien. Además, no encuentro que este parámetro requires
en la descripción de la API http://docs.python.org/2/distutils/apiref.html#distutils.core.setup
Así se hace así, por ejemplo,
setup(name=''MyStuff'',
version=''1.0'',
requires=''os, sys, progressbar'',
[...]
¡Espero que alguien me pueda dar un poco más de información! ¡Gracias!
EDITAR:
Para abordar la controversia de distutils.core, setuptools, uno podría simplemente hacer
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
¿Tiene sentido?