Recherche…


Paramètres

Paramètre Usage
name Nom de votre distribution.
version Chaîne de version de votre distribution.
packages Liste des packages Python (c'est-à-dire des répertoires contenant des modules) à inclure. Cela peut être spécifié manuellement, mais un appel à setuptools.find_packages() est généralement utilisé à la place.
py_modules Liste des modules Python de niveau supérieur (c'est-à-dire des fichiers .py uniques) à inclure.

Remarques

Pour plus d'informations sur les emballages en python, voir:

introduction

Pour rédiger des paquets officiels, il existe un guide d’utilisation des emballages .

But de setup.py

Le script de configuration est le centre de toutes les activités de création, de distribution et d’installation des modules utilisant les Distutils. Son but est l'installation correcte du logiciel.

Si tout ce que vous voulez faire est de distribuer un module appelé foo, contenu dans un fichier foo.py, alors votre script de configuration peut être aussi simple que cela:

from distutils.core import setup

setup(name='foo',
      version='1.0',
      py_modules=['foo'],
      )

Pour créer une distribution source pour ce module, vous devez créer un script d'installation, setup.py, contenant le code ci-dessus, et exécuter cette commande à partir d'un terminal:

python setup.py sdist

sdist va créer un fichier d'archive (par exemple, une archive tar sur Unix, un fichier ZIP sous Windows) contenant votre script d'installation setup.py et votre module foo.py. Le fichier d'archive s'appellera foo-1.0.tar.gz (ou .zip) et décompressera dans un répertoire foo-1.0.

Si un utilisateur souhaite installer votre module foo, il lui suffit de télécharger foo-1.0.tar.gz (ou .zip), de le décompresser et, à partir du répertoire foo-1.0, de l'exécuter.

python setup.py install

Ajout de scripts de ligne de commande à votre package python

Les scripts de ligne de commande dans les packages python sont communs. Vous pouvez organiser votre paquet de telle manière que lorsqu'un utilisateur installe le paquet, le script sera disponible sur son chemin.

Si vous aviez le paquet de greetings qui avait le script de ligne de commande hello_world.py .

greetings/
   greetings/
      __init__.py
      hello_world.py

Vous pouvez exécuter ce script en exécutant:

python greetings/greetings/hello_world.py

Cependant, si vous souhaitez le lancer comme ceci:

hello_world.py

Vous pouvez y parvenir en ajoutant des scripts à votre setup() dans setup.py comme ceci:

from setuptools import setup
setup(
  name='greetings',
  scripts=['hello_world.py']
)

Lorsque vous installez le package de salutations maintenant, hello_world.py sera ajouté à votre chemin.

Une autre possibilité serait d'ajouter un point d'entrée:

entry_points={'console_scripts': ['greetings=greetings.hello_world:main']}

De cette façon, il vous suffit de le lancer comme:

greetings

Utilisation des métadonnées du contrôle de code source dans setup.py

setuptools_scm est un paquet officiellement béni qui peut utiliser les métadonnées Git ou Mercurial pour déterminer le numéro de version de votre paquet et trouver les paquets Python et les données de paquet à inclure.

from setuptools import setup, find_packages

setup(
    setup_requires=['setuptools_scm'],
    use_scm_version=True,
    packages=find_packages(),
    include_package_data=True,
)

Cet exemple utilise les deux fonctionnalités; pour utiliser uniquement les métadonnées SCM pour la version, remplacez l'appel à find_packages() par votre liste de packages manuelle ou utilisez uniquement l'outil de recherche de package, supprimez use_scm_version=True .

Ajout d'options d'installation

Comme on l'a vu dans les exemples précédents, l'utilisation de base de ce script est la suivante:

python setup.py install

Mais il y a encore plus d'options, comme installer le paquet et avoir la possibilité de changer le code et de le tester sans avoir à le réinstaller. Ceci est fait en utilisant:

python setup.py develop

Si vous souhaitez effectuer des actions spécifiques telles que la compilation d'une documentation Sphinx ou la construction d'un code fortran , vous pouvez créer votre propre option comme celle-ci:

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 et finalize_options seront exécutés avant et après la fonction d' run , comme leur nom l'indique.

Après cela, vous pourrez appeler votre option:

python setup.py build_sphinx


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow