Domanda

Ho scritto un programma veloce in Python per aggiungere una GUI GTK a un programma cli.Mi chiedevo come posso creare un programma di installazione utilizzando distutils.Dato che è solo un frontend GUI per un'app a riga di comando, funziona comunque solo in *nix, quindi non sono preoccupato che sia multipiattaforma.

il mio obiettivo principale è creare un pacchetto .deb per utenti Debian/Ubuntu, ma non capisco i file make/configure.Finora sono stato principalmente uno sviluppatore web.

modificare:Qualcuno conosce un progetto che utilizza distutils in modo che io possa vederlo in azione e, sai, provare effettivamente a costruirlo?

Ecco alcuni link utili

  • Guida alla creazione di pacchetti Ubuntu Python

    Questa guida è molto utile.Non so come mi sono perso durante la mia ondata iniziale di gooling.Ti guida anche attraverso la creazione di un'applicazione Python esistente

  • Il progetto Ubuntu MOTU

    Questo è il pacchetto ufficiale che mantiene il progetto su Ubuntu.Chiunque può iscriversi e ci sono molti tutorial e informazioni sulla creazione di pacchetti, di tutti i tipi, che includono la "guida al pacchetto Python" di cui sopra.

  • "Python distUTILI TO DEB?" - Discussione sul forum di Ars Technica

    Secondo questa conversazione, non puoi semplicemente usare distutils.Non segue il formato di packaging di Debian (o qualcosa del genere).Immagino che sia per questo che hai bisogno di dh_make come visto nella guida al packaging di Ubuntu

  • "Un comando bdist_deb per distutils

    Questo contiene alcune discussioni interessanti (è anche il modo in cui ho trovato la guida di Ubuntu) sulla concatenazione di un file zip e uno script di shell per creare una sorta di eseguibile universale (qualsiasi cosa con Python e bash).Strano.Fatemi sapere se qualcuno trova maggiori informazioni su questa pratica perché non ne ho mai sentito parlare.

  • Descrizione del formato deb e come si inseriscono distutils - mailing list Python

È stato utile?

Soluzione

Vedi il distutils semplice esempio.Fondamentalmente è così, tranne per il fatto che gli script di installazione reali di solito contengono un po' più di informazioni.Tuttavia, non ne ho visto nessuno che sia fondamentalmente più complicato.In sostanza, devi solo fornire un elenco di ciò che deve essere installato.A volte è necessario dargli alcune indicazioni di mappatura poiché gli alberi sorgente e installati potrebbero non essere gli stessi.

Ecco un esempio di vita reale (anonimo):

#!/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']) 
          ])

Altri suggerimenti

apt-get install python-stdeb

Utilità di conversione del pacchetto sorgente da Python a Debian

Questo pacchetto fornisce alcuni strumenti per produrre pacchetti Debian da pacchetti Python tramite un nuovo comando distutils, sdist_dsc.Per il pacchetto Debian vengono forniti valori predefiniti automatici, ma molti aspetti del pacchetto risultante possono essere personalizzati tramite un file di configurazione.

  • PyPI-Install interrogherà l'indice del pacchetto Python (PYPI) per un pacchetto, lo scaricherà, creerà un .deb da esso e quindi installa il .deb.
  • PY2DSC convertirà un tarball di origine costruito da distUTILS in un pacchetto di fonte Debian.

La maggior parte dei programmi Python utilizzerà distutils. Django è uno - vedi http://code.djangoproject.com/svn/django/trunk/setup.py

Dovresti anche leggere la documentazione, poiché è molto completo e contiene alcuni buoni esempi.

Ho trovato quanto segue tutorial essere molto utile.È più breve della documentazione di distutils e spiega come impostare un tipico progetto passo dopo passo.

distutils non è poi così difficile una volta capito come funziona.In realtà è solo questione di inserire alcune metainformazioni (nome del programma, autore, versione, ecc.) e quindi selezionare quali file desideri includere.Ad esempio, ecco un esempio di modulo distutils setup.py da una libreria Python abbastanza complessa:

Kamaelia setup.py

Tieni presente che questo non riguarda alcun file di dati o altro, quindi YMMV.

In un'altra nota, sono d'accordo sul fatto che la documentazione di distutils sia probabilmente la peggiore documentazione di Python.È estremamente inclusivo in alcune aree, ma trascura alcune informazioni veramente importanti in altre.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top