Zoeken…


parameters

Parameter Gebruik
name Naam van uw distributie.
version Versiereeks van uw distributie.
packages Lijst met Python-pakketten (dat wil zeggen mappen met modules) die moeten worden opgenomen. Dit kan handmatig worden opgegeven, maar in plaats daarvan wordt meestal een aanroep naar setuptools.find_packages() gebruikt.
py_modules Lijst met Python-modules op het hoogste niveau (dat wil zeggen afzonderlijke .py bestanden) die moeten worden opgenomen.

Opmerkingen

Voor meer informatie over python-verpakkingen, zie:

Invoering

Voor het schrijven van officiële pakketten is er een gebruikershandleiding voor verpakkingen .

Doel van setup.py

Het installatiescript is het middelpunt van alle activiteiten bij het bouwen, distribueren en installeren van modules met behulp van de Distutils. Het doel is de juiste installatie van de software.

Als u alleen een module met de naam foo wilt verspreiden, die zich in een bestand foo.py bevindt, kan uw installatiescript zo eenvoudig zijn als dit:

from distutils.core import setup

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

Als u een brondistributie voor deze module wilt maken, maakt u een installatiescript, setup.py, met de bovenstaande code en voert u deze opdracht uit vanaf een terminal:

python setup.py sdist

sdist zal een archiefbestand maken (bijv. tarball op Unix, ZIP-bestand op Windows) met uw installatiescript setup.py en uw module foo.py. Het archiefbestand krijgt de naam foo-1.0.tar.gz (of .zip) en wordt uitgepakt in een map foo-1.0.

Als een eindgebruiker uw foo-module wenst te installeren, hoeft hij alleen foo-1.0.tar.gz (of .zip) te downloaden, uit te pakken en - vanuit de foo-1.0-directory - uit te voeren

python setup.py install

Opdrachtregelscripts toevoegen aan uw python-pakket

Commandoregelscripts in python-pakketten zijn gebruikelijk. U kunt uw pakket zo organiseren dat wanneer een gebruiker het pakket installeert, het script op zijn pad beschikbaar is.

Als u het greetings had met het opdrachtregelscript hello_world.py .

greetings/
   greetings/
      __init__.py
      hello_world.py

Je kunt dat script uitvoeren door het volgende uit te voeren:

python greetings/greetings/hello_world.py

Als u het echter als volgt wilt uitvoeren:

hello_world.py

U kunt dit bereiken door scripts te voegen aan uw setup() in setup.py als volgt:

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

Wanneer u het begroetingspakket nu installeert, wordt hello_world.py aan uw pad toegevoegd.

Een andere mogelijkheid zou zijn om een entrypunt toe te voegen:

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

Op deze manier moet je het gewoon uitvoeren zoals:

greetings

Metadata van bronbeheer gebruiken in setup.py

setuptools_scm is een officieel gezegend pakket dat setuptools_scm of Mercurial-metagegevens kan gebruiken om het versienummer van uw pakket te bepalen en Python-pakketten en pakketgegevens te vinden om erin op te nemen.

from setuptools import setup, find_packages

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

In dit voorbeeld worden beide functies gebruikt; om alleen SCM-metagegevens voor de versie te gebruiken, vervangt u de aanroep naar find_packages() door uw handmatige find_packages() of verwijdert u use_scm_version=True om alleen de use_scm_version=True .

Installatie-opties toevoegen

Zoals te zien in eerdere voorbeelden is het basisgebruik van dit script:

python setup.py install

Maar er zijn nog meer opties, zoals het installeren van het pakket en de mogelijkheid om de code te wijzigen en te testen zonder deze opnieuw te hoeven installeren. Dit wordt gedaan met behulp van:

python setup.py develop

Als u specifieke acties wilt uitvoeren, zoals het opstellen van een Sphinx- documentatie of het bouwen van fortran- code, kunt u uw eigen optie als volgt maken:

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 en finalize_options worden uitgevoerd voor en na de run functie zoals hun namen suggereren.

Daarna kunt u uw optie bellen:

python setup.py build_sphinx


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow