118 votes

Exemples de setup.py ?

Après avoir étudié cette page :

http://docs.python.org/distutils/builtdist.html

J'espère trouver quelques fichiers setup.py à étudier afin de faire le mien (dans le but de faire un fichier rpm fedora).

La communauté des s.o. pourrait-elle m'indiquer quelques bons exemples ?

76voto

Rafe Kettler Points 29389

Visite complète de l'écriture setup.py scripts aquí . (avec quelques exemples)

Si vous souhaitez un exemple concret, je peux vous orienter vers la setup.py scripts de quelques projets majeurs. Celui de Django est aquí , pyglet's est aquí . Vous pouvez simplement parcourir les sources d'autres projets pour trouver un fichier nommé setup.py pour plus d'exemples.

Il ne s'agit pas d'exemples simples ; le lien du tutoriel que j'ai donné en contient. Ceux-ci sont plus complexes, mais aussi plus pratiques.

40voto

jozo Points 416

Exemple minimal

from setuptools import setup, find_packages

setup(
    name="foo",
    version="1.0",
    packages=find_packages(),
)

Plus d'informations dans docs

31voto

gotgenes Points 8667

Vous pouvez trouver le Le guide de l'emballage pour les auto-stoppeurs utile, même si elle est incomplète. Je commencerais par le Tutoriel de démarrage rapide . Essayez aussi de parcourir simplement les paquets Python sur le site Index des paquets Python . Il suffit de télécharger l'archive, de la décompresser, et de jeter un coup d'œil à la page d'accueil. setup.py fichier. Ou encore mieux, ne vous donnez la peine de regarder que les paquets qui listent un dépôt de code source public tel qu'un dépôt hébergé sur GitHub ou BitBucket. Vous en trouverez forcément un sur la page d'accueil.

Ma dernière suggestion est de vous lancer et d'essayer d'en faire un ; n'ayez pas peur d'échouer. Je n'ai vraiment pas compris jusqu'à ce que je commence à en faire moi-même. Il est trivial de créer un nouveau paquet sur PyPI et tout aussi facile de le supprimer. Alors, créez un paquet factice et jouez avec.

27voto

Yauhen Yakimovich Points 2222

LISEZ D'ABORD CECI https://packaging.python.org/en/latest/current.html

Recommandations concernant les outils d'installation

  1. Utiliser pip pour installer les paquets Python à partir de PyPI.
  2. Utilisez virtualenv, ou pyvenv pour isoler les dépendances spécifiques à une application d'une installation Python partagée.
  3. Utilisez pip wheel pour créer un cache des distributions wheel, dans le but > d'accélérer les installations ultérieures.
  4. Si vous cherchez à gérer des piles logicielles multiplateformes entièrement intégrées, envisagez buildout (principalement axé sur la communauté des développeurs web) ou Hashdist, ou conda (tous deux principalement axés sur la communauté scientifique).

Recommandations sur les outils d'emballage

  1. Utilisez setuptools pour définir des projets et créer des distributions de sources.
  2. Utilisez l'extension bdist_wheel setuptools disponible dans le projet wheel pour créer des roues. Ceci est particulièrement bénéfique, si votre projet contient des extensions binaires.
  3. Utilisez twine pour télécharger des distributions sur PyPI.

Cette réponse a vieilli, et en effet il existe un plan de sauvetage pour le monde de l'emballage python appelé

chemin de roues

Je qoute pythonwheels.com ici :

Que sont les roues ?

Les roues sont la nouvelle norme de distribution de python et sont destinées à remplacer les œufs. Le support est offert dans pip >= 1.4 et setuptools >= 0.8.

Avantages des roues

  1. Installation plus rapide pour les paquets d'extension en python pur et en C natif.
  2. Évite l'exécution de code arbitraire pour l'installation. (Evite setup.py)
  3. L'installation d'une extension C ne nécessite pas de compilateur sous Windows ou OS X.
  4. Permet une meilleure mise en cache pour les tests et la continuité continue.
  5. Crée des fichiers .pyc dans le cadre de l'installation pour s'assurer qu'ils correspondent à l'interpréteur python utilisé.
  6. Des installations plus cohérentes entre les plateformes et les machines.

L'histoire complète de l'empaquetage correct de python (et des roues) est couverte à l'adresse suivante packaging.python.org


chemin de la conda

Pour le calcul scientifique (ceci est également recommandé sur packaging.python.org, voir ci-dessus), j'envisagerais d'utiliser Emballage CONDA qui peut être considéré comme un service tiers construit au-dessus de PyPI et des outils pip. Il fonctionne également très bien pour mettre en place votre propre version de binstar J'imagine donc qu'il peut faire l'affaire pour une gestion personnalisée et sophistiquée des paquets d'entreprise.

Conda peut être installé dans un dossier d'utilisateur (sans permissions de super utilisateur) et fonctionne comme par magie avec

installation de conda

et une puissante expansion de l'environnement virtuel.


façon œufs

Cette option était liée à python-distribute.org et est largement dépassée (tout comme le site). Je vais donc vous indiquer l'un des exemples de setup.py prêts à l'emploi mais compacts que j'aime bien :

  • Un exemple/implémentation très pratique du mélange de scripts et de fichiers python simples dans setup.py est de donner aquí
  • Encore mieux, celui de hyperopt

Cette citation est tirée du guide sur le état de setup.py et s'applique toujours :

  • setup.py disparu !
  • Les distutils sont partis !
  • Distribué à l'extérieur !
  • pip et virtualenv sont là pour rester !
  • les œufs ... disparus !

J'ajoute un point supplémentaire (de ma part)

  • roues !

Je vous recommande de vous familiariser avec écosystème de l'emballage (du guide indiqué par gotgenes) avant de tenter un copier-coller insensé.

~~La plupart des exemples que l'on trouve sur Internet commencent par

from distutils.core import setup

mais cela ne permet pas, par exemple, de construire un œuf. python setup.py bdist_egg (ainsi que d'autres vieux ), qui étaient disponibles dans

from setuptools import setup

Et la raison en est qu'ils sont déprécié .

Maintenant, selon le guide

Avertissement

Veuillez utiliser le paquet Distribute plutôt que le paquet Setuptools. parce qu'il y a des problèmes dans ce paquet qui peuvent être et ne seront pas être corrigés.

Les setuptools dépréciés doivent être remplacés par distutils2 qui "fera partie de la bibliothèque standard de Python 3.3". Je dois dire que j'ai aimé setuptools et eggs et que je n'ai pas encore été complètement convaincu par la commodité de distutils2. Il faut

pip install Distutils2

et d'installer

python -m distutils2.run install~~ 

PS

L'emballage n'a jamais été trivial (on l'apprend en essayant d'en développer un nouveau), donc je suppose que beaucoup de choses sont passées par la raison. J'espère juste que cette fois-ci sera est fait correctement.

11voto

Razzi Abuissa Points 728

Je recommande le setup.py de la Guide de l'utilisateur de Python Packaging Le projet d'exemple de la Commission européenne.

Le guide de l'utilisateur de Python Packaging "vise à être la ressource faisant autorité sur la façon d'empaqueter, de publier et d'installer des distributions Python en utilisant les outils actuels".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X