Recherche…


Remarques

L' exemple de projet pypa contient un modèle complet et facilement modifiable, setup.py qui démontre un large éventail de fonctionnalités que setup-tools peut offrir.

introduction

Chaque paquet nécessite un fichier setup.py qui décrit le paquet.

Considérez la structure de répertoires suivante pour un package simple:

+-- package_name
|       |
|       +-- __init__.py
|       
+-- setup.py

Le __init__.py ne contient que la ligne def foo(): return 100 .

Le setup.py suivant définira le package:

from setuptools import setup


setup(
    name='package_name',                    # package name
    version='0.1',                          # version
    description='Package Description',      # short description
    url='http://example.com',               # package URL
    install_requires=[],                    # list of packages this package depends
                                            # on.
    packages=['package_name'],              # List of module names that installing
                                            # this package will provide.
)

virtualenv est idéal pour tester les installations de paquets sans modifier vos autres environnements Python:

$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
$ python setup.py install
running install
...
Installed .../package_name-0.1-....egg
...
$ python
>>> import package_name
>>> package_name.foo() 
100

Téléchargement vers PyPI

Une fois que votre setup.py est entièrement fonctionnel (voir Introduction ), il est très facile de télécharger votre paquet vers PyPI .

Configurer un fichier .pypirc

Ce fichier stocke les identifiants et les mots de passe pour authentifier vos comptes. Il est généralement stocké dans votre répertoire personnel.

# .pypirc file

[distutils]
index-servers =
  pypi
  pypitest

[pypi]
repository=https://pypi.python.org/pypi
username=your_username
password=your_password

[pypitest]
repository=https://testpypi.python.org/pypi
username=your_username
password=your_password

Il est plus sûr d'utiliser la twine pour le téléchargement de paquets, alors assurez-vous qu'elle est installée.

$ pip install twine

S'inscrire et télécharger sur testpypi (facultatif)

Remarque : PyPI n'autorise pas le remplacement des paquets téléchargés . Il est donc prudent de tester d'abord votre déploiement sur un serveur de test dédié, par exemple, testpypi. Cette option sera discutée. Envisagez un système de gestion des versions pour votre package avant de le télécharger, comme le contrôle de version du calendrier ou le contrôle de version sémantique .

Connectez-vous ou créez un nouveau compte sur testpypi . L'inscription n'est requise que la première fois, bien que l'enregistrement plus d'une fois ne soit pas dangereux.

$ python setup.py register -r pypitest

Dans le répertoire racine de votre package:

$ twine upload dist/* -r pypitest

Votre paquet devrait maintenant être accessible via votre compte.

Essai

Créez un environnement virtuel de test. Essayez d' pip install votre paquet à partir de testpypi ou de PyPI.

# Using virtualenv
$ mkdir testenv
$ cd testenv
$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
# Test from testpypi
(.virtualenv)  pip install --verbose --extra-index-url https://testpypi.python.org/pypi package_name
...
# Or test from PyPI
(.virtualenv) $ pip install package_name
...

(.virtualenv) $ python
Python 3.5.1 (default, Jan 27 2016, 19:16:39)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import package_name
>>> package_name.foo()
100

En cas de succès, votre paquet est le moins importable. Vous pourriez également envisager de tester votre API avant votre téléchargement final sur PyPI. Si votre paquet a échoué pendant le test, ne vous inquiétez pas. Vous pouvez toujours résoudre le problème, re-télécharger sur testpypi et tester à nouveau.

Enregistrer et télécharger sur PyPI

Assurez-vous que la twine est installée:

$ pip install twine

Connectez-vous ou créez un nouveau compte sur PyPI .

$ python setup.py register -r pypi
$ twine upload dist/*

C'est tout! Votre colis est maintenant en ligne .

Si vous découvrez un bogue, téléchargez simplement une nouvelle version de votre paquet.

Documentation

N'oubliez pas d'inclure au moins une sorte de documentation pour votre paquet. PyPi prend comme langage de formatage par défaut reStructuredText .

Readme

Si votre paquet ne contient pas une grande documentation, incluez ce qui peut aider les autres utilisateurs dans le fichier README.rst . Lorsque le fichier est prêt, il en faut un autre pour que PyPi le montre.

Créez le fichier setup.cfg et insérez-y ces deux lignes:

[metadata]
description-file = README.rst

Notez que si vous essayez de placer le fichier Markdown dans votre paquet, PyPi le lira comme un fichier texte pur sans aucune mise en forme.

Licence

Il est souvent plus que bienvenu de placer un fichier LICENSE.txt dans votre package avec l'une des licences OpenSource pour indiquer aux utilisateurs s'ils peuvent utiliser votre package par exemple dans des projets commerciaux ou si votre code est utilisable avec leur licence.

De manière plus lisible, certaines licences sont expliquées chez TL; DR .

Rendre le package exécutable

Si votre paquet n'est pas seulement une bibliothèque, mais un morceau de code pouvant être utilisé soit comme une vitrine, soit comme une application autonome lorsque votre paquet est installé, placez ce morceau de code dans le fichier __main__.py .

Placez le __main__.py dans le dossier package_name . De cette façon, vous pourrez l'exécuter directement depuis la console:

python -m package_name

S'il n'y a pas de fichier __main__.py disponible, le paquet ne sera pas exécuté avec cette commande et cette erreur sera imprimée:

python: aucun module nommé package_name.__main__; 'nom_package' est un package et ne peut pas être directement exécuté.



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