Ricerca…


Parametri

Parametro uso
name Nome della tua distribuzione.
version Stringa di versione della tua distribuzione.
packages Elenco di pacchetti Python (ovvero, directory contenenti moduli) da includere. Questo può essere specificato manualmente, ma in genere viene utilizzata una chiamata a setuptools.find_packages() .
py_modules Elenco dei moduli Python di primo livello (ovvero, singoli file .py ) da includere.

Osservazioni

Per ulteriori informazioni sulla confezione Python vedere:

introduzione

Per scrivere pacchetti ufficiali c'è una guida per l'utente della confezione .

Scopo di setup.py

Lo script di installazione è il centro di tutte le attività nella costruzione, distribuzione e installazione di moduli usando le Distutils. Lo scopo è la corretta installazione del software.

Se tutto quello che vuoi fare è distribuire un modulo chiamato foo, contenuto in un file foo.py, allora lo script di installazione può essere semplice come questo:

from distutils.core import setup

setup(name='foo',
      version='1.0',
      py_modules=['foo'],
      )

Per creare una distribuzione di origine per questo modulo, devi creare uno script di installazione, setup.py, contenente il codice precedente ed eseguire questo comando da un terminale:

python setup.py sdist

sdist creerà un file di archivio (ad esempio, tarball su Unix, file ZIP su Windows) contenente lo script di installazione setup.py e il modulo foo.py. Il file di archivio sarà chiamato foo-1.0.tar.gz (o .zip) e decomprimerà in una directory foo-1.0.

Se un utente finale desidera installare il tuo modulo foo, tutto ciò che deve fare è scaricare foo-1.0.tar.gz (o .zip), decomprimerlo e-dalla directory foo-1.0-run

python setup.py install

Aggiunta di script da riga di comando al pacchetto python

Gli script della riga di comando all'interno dei pacchetti python sono comuni. Puoi organizzare il tuo pacchetto in modo tale che quando un utente installa il pacchetto, lo script sarà disponibile sul loro percorso.

Se avessi il pacchetto dei greetings lo script della riga di comando hello_world.py .

greetings/
   greetings/
      __init__.py
      hello_world.py

È possibile eseguire quello script eseguendo:

python greetings/greetings/hello_world.py

Tuttavia se desideri eseguirlo in questo modo:

hello_world.py

È possibile ottenere ciò aggiungendo scripts al proprio setup() in setup.py questo modo:

from setuptools import setup
setup(
  name='greetings',
  scripts=['hello_world.py']
)

Quando installi il pacchetto di auguri ora, hello_world.py verrà aggiunto al tuo percorso.

Un'altra possibilità potrebbe essere quella di aggiungere un punto di ingresso:

entry_points={'console_scripts': ['greetings=greetings.hello_world:main']}

In questo modo devi solo eseguirlo come:

greetings

Utilizzo dei metadati del controllo del codice sorgente in setup.py

setuptools_scm è un pacchetto ufficialmente benedetto che può utilizzare i metadati Git o Mercurial per determinare il numero di versione del pacchetto e trovare i pacchetti Python e i dati del pacchetto da includere in esso.

from setuptools import setup, find_packages

setup(
    setup_requires=['setuptools_scm'],
    use_scm_version=True,
    packages=find_packages(),
    include_package_data=True,
)

Questo esempio utilizza entrambe le funzionalità; per utilizzare solo i metadati SCM per la versione, sostituire la chiamata a find_packages() con l'elenco dei pacchetti manuale o utilizzare solo il finder dei pacchetti, rimuovere use_scm_version=True .

Aggiunta di opzioni di installazione

Come visto negli esempi precedenti, l'uso di base di questo script è:

python setup.py install

Ma ci sono ancora più opzioni, come installare il pacchetto e avere la possibilità di cambiare il codice e testarlo senza doverlo reinstallare. Questo è fatto usando:

python setup.py develop

Se vuoi eseguire azioni specifiche come compilare una documentazione di Sphinx o creare un codice fortran , puoi creare la tua opzione in questo modo:

cmdclasses = dict()

class BuildSphinx(Command):

    """Build Sphinx documentation."""

    description = 'Build Sphinx documentation'
    user_options = []

    def initialize_options(self):
        pass

    def finalize_options(self):
        pass

    def run(self):
        import sphinx
        sphinx.build_main(['setup.py', '-b', 'html', './doc', './doc/_build/html'])
        sphinx.build_main(['setup.py', '-b', 'man', './doc', './doc/_build/man'])

cmdclasses['build_sphinx'] = BuildSphinx

setup(
...
cmdclass=cmdclasses,
)

initialize_options e finalize_options saranno eseguite prima e dopo la funzione di run come i loro nomi lo suggeriscono.

Dopodiché, potrai chiamare la tua opzione:

python setup.py build_sphinx


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow