Sök…


parametrar

Parameter Användande
name Namnet på din distribution.
version Versionssträng för din distribution.
packages Lista över Python-paket (det vill säga kataloger som innehåller moduler) att inkludera. Detta kan specificeras manuellt, men ett samtal till setuptools.find_packages() används vanligtvis istället.
py_modules Lista över Python-moduler på toppnivå (det vill säga enstaka .py filer) att inkludera.

Anmärkningar

För ytterligare information om pythonförpackning se:

Introduktion

För att skriva officiella paket finns en användarhandbok för förpackningar .

Syfte med setup.py

Installationsskriptet är mitten av all aktivitet i att bygga, distribuera och installera moduler med hjälp av Distutils. Syftet är att installationen av programvaran är korrekt.

Om allt du vill göra är att distribuera en modul som heter foo, som finns i en fil foo.py, kan ditt installationsskript vara så enkelt som det här:

from distutils.core import setup

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

För att skapa en källfördelning för den här modulen, skapar du ett installationsskript, setup.py, som innehåller koden ovan, och kör detta kommando från en terminal:

python setup.py sdist

sdist skapar en arkivfil (t.ex. tarball på Unix, ZIP-fil i Windows) som innehåller ditt installationsskript setup.py och din modul foo.py. Arkivfilen kommer att ha namnet foo-1.0.tar.gz (eller .zip) och packas upp i en katalog foo-1.0.

Om en slutanvändare vill installera din foo-modul, allt hon behöver göra är att ladda ner foo-1.0.tar.gz (eller .zip), packa upp den och - från foo-1.0-katalogen - köra

python setup.py install

Lägga till kommandoradsskript till ditt pythonpaket

Kommandoradsskript i pythonpaket är vanliga. Du kan organisera ditt paket på ett sådant sätt att när en användare installerar paketet kommer skriptet att vara tillgängligt på deras väg.

Om du hade greetings som hade kommandoradsskriptet hello_world.py .

greetings/
   greetings/
      __init__.py
      hello_world.py

Du kan köra skriptet genom att köra:

python greetings/greetings/hello_world.py

Men om du vill köra det så:

hello_world.py

Du kan uppnå detta genom att lägga till scripts till din setup() i setup.py så här:

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

När du installerar hälsningspaketet nu läggs hello_world.py till på din sökväg.

En annan möjlighet skulle vara att lägga till en startpunkt:

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

På det här sättet måste du bara köra det som:

greetings

Använda källkontrollmetadata i setup.py

setuptools_scm är ett officiellt välsignat paket som kan använda Git- eller Mercurial-metadata för att bestämma versionnumret för ditt paket, och hitta Python-paket och paketdata att inkludera i det.

from setuptools import setup, find_packages

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

Detta exempel använder båda funktionerna; find_packages() använda SCM-metadata för versionen, byt ut samtalet till find_packages() med din manuella paketlista, eller om du bara använder paketvisaren, ta bort use_scm_version=True .

Lägga till installationsalternativ

Som vi har sett i tidigare exempel är grundläggande användning av detta skript:

python setup.py install

Men det finns ännu fler alternativ, som att installera paketet och ha möjlighet att ändra koden och testa den utan att behöva installera om den igen. Detta görs med hjälp av:

python setup.py develop

Om du vill utföra specifika åtgärder som att sammanställa en Sphinx- dokumentation eller bygga fortran- kod, kan du skapa ditt eget alternativ på följande sätt:

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 och finalize_options kommer att run före och efter run som deras namn antyder det.

Efter det kommer du att kunna ringa ditt alternativ:

python setup.py build_sphinx


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow