Question

J'ai écrit un programme rapide en python pour ajouter une interface graphique gtk à un programme cli.Je me demandais comment créer un programme d'installation à l'aide de distutils.Puisqu'il ne s'agit que d'une interface graphique pour une application en ligne de commande, elle ne fonctionne de toute façon que dans * nix, donc je ne crains pas qu'elle soit multiplateforme.

mon objectif principal est de créer un package .deb pour les utilisateurs debian/ubuntu, mais je ne comprends pas la création/configuration des fichiers.Jusqu'à présent, j'ai principalement été développeur Web.

modifier:Est-ce que quelqu'un connaît un projet qui utilise distutils pour que je puisse le voir en action et, vous savez, essayer de le construire ?

Voici quelques liens utiles

  • Guide d'empaquetage Ubuntu Python

    Ce guide est très utile.Je ne sais pas comment je l'ai raté lors de ma première vague de gooling.Il vous guide même dans l'empaquetage d'une application Python existante

  • Le projet Ubuntu MOTU

    Il s'agit du projet officiel de maintenance du package sur Ubuntu.Tout le monde peut s'inscrire, et il existe de nombreux didacticiels et informations sur la création de packages, de tous types, qui incluent le « guide d'empaquetage python » ci-dessus.

  • "Python Distutils à Deb?" - Discussion du forum ARS Technica

    D'après cette conversation, vous ne pouvez pas simplement utiliser distutils.Il ne suit pas le format d'emballage Debian (ou quelque chose comme ça).Je suppose que c'est pourquoi vous avez besoin de dh_make comme indiqué dans le guide Ubuntu Packaging

  • "Une commande bdist_deb pour distutils

    Celui-ci a une discussion intéressante (c'est aussi ainsi que j'ai trouvé le guide Ubuntu) sur la concaténation d'un fichier zip et d'un script shell pour créer une sorte d'exécutable universel (n'importe quoi avec python et bash).bizarre.Faites-moi savoir si quelqu'un trouve plus d'informations sur cette pratique car je n'en ai jamais entendu parler.

  • Description du format deb et de la place de distutils - liste de diffusion python

Était-ce utile?

La solution

Voir le exemple simple de distutils.C'est essentiellement à cela que cela ressemble, sauf que les vrais scripts d'installation contiennent généralement un peu plus d'informations.Cependant, je n’en ai pas vu qui soient fondamentalement plus compliqués.Essentiellement, vous lui donnez simplement une liste de ce qui doit être installé.Parfois, vous devez lui donner quelques dictionnaires de mappage, car les arborescences source et installée peuvent ne pas être les mêmes.

Voici un exemple réel (anonymisé) :

#!/usr/bin/python 

from distutils.core import setup 

setup (name = 'Initech Package 3', 
          description = "Services and libraries ABC, DEF", 
          author = "That Guy, Initech Ltd", 
          author_email = "that.guy@initech.com", 
          version = '1.0.5', 
          package_dir = {'Package3' : 'site-packages/Package3'}, 
          packages = ['Package3', 'Package3.Queries'], 
          data_files = [ 
                       ('/etc/Package3', ['etc/Package3/ExternalResources.conf']) 
          ])

Autres conseils

apt-get install python-stdeb

Utilitaire de conversion de paquets sources Python vers Debian

Ce paquet fournit des outils pour produire des paquets Debian à partir de paquets Python via une nouvelle commande distutils, sdist_dsc.Des valeurs par défaut automatiques sont fournies pour le paquet Debian, mais de nombreux aspects du paquet résultant peuvent être personnalisés via un fichier de configuration.

  • PYPI-INSTALL interrogera l'index Python Package Index (PYPI) pour un package, le téléchargera, créera un .deb à partir de celui-ci, puis installez le .deb.
  • PY2DSC convertira un tarball source construit par les Distutils en un package de Debian Source.

La plupart des programmes Python utiliseront distutils. Django en est un - voir http://code.djangoproject.com/svn/django/trunk/setup.py

Tu devrais aussi lire La documentation, car il est très complet et contient de bons exemples.

J'ai trouvé ce qui suit Didacticiel être très utile.Il est plus court que la documentation distutils et explique comment configurer un projet typique étape par étape.

distutils n'est vraiment pas si difficile une fois que vous avez compris.Il s'agit simplement de saisir des méta-informations (nom du programme, auteur, version, etc.), puis de sélectionner les fichiers que vous souhaitez inclure.Par exemple, voici un exemple de module distutils setup.py issu d'une bibliothèque python assez complexe :

Kamaelia setup.py

Notez que cela ne concerne aucun fichier de données ou autre, donc YMMV.

D'un autre côté, je conviens que la documentation distutils est probablement l'une des pires documentations de Python.Il est extrêmement inclusif dans certains domaines, mais néglige certaines informations vraiment importantes dans d’autres.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top