web-dev-qa-db-fra.com

Configuration d'un système de construction pour Python

En essayant de résoudre le problème this , j'ai rencontré le problème suivant.

J'ai un script Python qui est installé sur /usr/lib/. Mais j'ai besoin de mettre ce script dans un système de build afin de pouvoir le faire fonctionner avec mon package.

Toute aide serait appréciée. Bien que j'aie un peu travaillé avec Makefiles lors de l'écriture d'applications C++ auparavant, je n'ai jamais créé aucun type de Makefile pour les fichiers Python (et je ne sais même pas par où commencer).

Comment dois-je procéder pour configurer un système de génération pour mon application?

3
Nathan Osman

Eh bien, comme je l'ai expliqué sur l'autre question, vous n'avez pas besoin d'un système de construction et dans ce cas particulier, il vaut mieux s'en passer.

Cependant, le plus standard est distutils . Il suffit de fournir les métadonnées (c'est-à-dire le nom, la description, etc.) et une liste de packages (python), de modules et de scripts (tous facultatifs) et c'est fait.

Enfin, si vous souhaitez générer un paquet Debian à partir de votre projet, vous pouvez très facilement le faire en utilisant python-stdeb (les usages dh7, que j'aime mieux) ou python-mkdebian (utilise cdbs). Il existe de nombreuses autres différences entre ces outils, mais je vous laisse les découvrir vous-même. Notez simplement que les deux nécessitent l'utilisation de distutils. (python-mkdebian fait partie du python-distutils-extra package dans Ubuntu, je n'ai pas utilisé -extra beaucoup, mais vous pouvez essayer aussi si vous le souhaitez)

6
Umang

Scons est un système de construction qui utilise Python comme langage (je le préfère généralement aux makefiles pour tout projet), je pense qu'il devrait être capable de ce que vous voulez faire.

Il a un très bon Guide de l'utilisateur .

0
thbusch

Umang a la bonne réponse, mais peut-être pas avec autant de détails que vous pourriez avoir besoin en tant que débutant complet.

Pour un programme Python, vous devez commencer par créer un fichier setup.py. La majeure partie du fichier sera un appel à distutils.core.setup - cela est expliqué dans détail dans partie 2 de la documentation distutils .

Tous les autres systèmes de conditionnement pour Python (tels que py2exe, setuptools ou Distribute) sont construits au-dessus du package distutils, généralement en étendant setup() dans certains (avec des paramètres ou des commandes supplémentaires).

Avant de le convertir en package Ubuntu, vous pouvez tester le script de configuration en exécutant Sudo setup.py install. Il doit installer les fichiers dans leurs emplacements attendus; si ce n'est pas le cas, vous devrez peut-être vérifier votre configuration. En particulier, les sections 2.5 (scripts) et 2.6 (données de package) de la documentation distutils s'appliquent probablement à votre situation.

Une fois cela fait, vous pouvez ensuite regarder la superposition sur le package Ubuntu conformément au Guide de packaging Ubuntu pour Python . Les outils python-stdeb Et python-mkdebian Proposés par Umang simplifient la génération des différents fichiers requis pour l'empaquetage Ubuntu.

0
jbowtie

Assurez-vous de vérifier:

http://pypi.python.org/pypi/modern-package-template/1. Pour une bonne disposition de package par défaut, y compris un fichier setup.py de démarrage

http://pypi.python.org/pypi/virtualenv Pour bloquer votre environnement de développement du reste de votre système. Exécuter quelque chose comme

python setup.py develop

Construira/configurera votre commande dans votre virtualenv afin que vous puissiez la tester.

0
Rick