wheel python setuptools

python - wheel - ¿Cómo incluir el archivo de licencia en el script setup.py?



python packages (4)

Escriba un archivo setup.cfg y allí especifique:

[metadata] license_file = LICENSE.txt

Para que esto funcione, parece que es necesario instalar la rueda. Es decir:

pip install wheel

Luego, al instalar el paquete a través de pip install <path> se incluye el archivo de LICENCIA.

He escrito un módulo de extensión de Python en C ++. Planeo distribuir el módulo con setuptools. Habrá distribuciones binarias para Windows de 32 y 64 bits (construidas con setup.py bdist_egg ) y una distribución de origen para plataformas similares a UNIX (creadas con setup.py sdist ).

Planeo licenciar el módulo bajo la licencia BSD. En mi árbol de origen, el archivo LICENSE.txt está en la carpeta superior junto con setup.py. ¿Cómo debo incluirlo en el paquete de instalación?

Probé el siguiente script setup.py:

from setuptools import setup, Extension from glob import glob setup( name = ''Foo'', version = ''0.1.0'', ext_modules = [Extension(''Foo'', glob(''Source/*.cpp''))], package_data = {'''': [''LICENSE.txt'']} )

No funcionó, el archivo de licencia no está incluido en el paquete de instalación. Tal vez porque el archivo setup.py no define ningún paquete, solo un único módulo de extensión.

¿Cómo puedo solucionar esto?


Por ejemplo:

setup( ... license="ZPL", classifiers=[ ... ''License :: OSI Approved :: Zope Public License'', ... ], ...)

Además, puede insertar el texto de su licencia en ''long_description'':

setup( ... long_description="Package description. /nLicense Text", ...)


Usa data_files :

setup( name = "Foo", version = "0.1.0", ext_modules = [Extension("Foo", glob("Source/*.cpp"))], data_files = [("", ["LICENSE.txt"])] )

Dos observaciones:

  1. No hay una necesidad directa de enviar una licencia con su producto, puede usar los metadatos de la licencia en distutils para especificar esto.

  2. No use comillas mixtas y comillas dobles en su código :)


Usando un archivo METADATA.in, la licencia puede incluirse tanto el paquete fuente como las ruedas automáticamente:

include README.md include COPYING

Echa un vistazo a un ejemplo aquí: https://github.com/node40/smsh