Zoeken…


Opmerkingen

De pypa voorbeeldproject bevat een complete, eenvoudig aanpasbaar template setup.py die een goede illustratie van een groot scala aan mogelijkheden setup-instrumenten te bieden heeft.

Invoering

Elk pakket vereist een setup.py bestand dat het pakket beschrijft.

Overweeg de volgende mapstructuur voor een eenvoudig pakket:

+-- package_name
|       |
|       +-- __init__.py
|       
+-- setup.py

De __init__.py bevat alleen de regel def foo(): return 100 .

De volgende setup.py zal het pakket definiëren:

from setuptools import setup


setup(
    name='package_name',                    # package name
    version='0.1',                          # version
    description='Package Description',      # short description
    url='http://example.com',               # package URL
    install_requires=[],                    # list of packages this package depends
                                            # on.
    packages=['package_name'],              # List of module names that installing
                                            # this package will provide.
)

virtualenv is geweldig om pakketinstallaties te testen zonder uw andere Python-omgevingen te wijzigen:

$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
$ python setup.py install
running install
...
Installed .../package_name-0.1-....egg
...
$ python
>>> import package_name
>>> package_name.foo() 
100

Uploaden naar PyPI

Zodra uw setup.py volledig functioneel is (zie Inleiding ), is het heel eenvoudig om uw pakket naar PyPI te uploaden .

Stel een .pypirc-bestand in

In dit bestand worden aanmeldingen en wachtwoorden opgeslagen om uw accounts te verifiëren. Het wordt meestal opgeslagen in uw thuismap.

# .pypirc file

[distutils]
index-servers =
  pypi
  pypitest

[pypi]
repository=https://pypi.python.org/pypi
username=your_username
password=your_password

[pypitest]
repository=https://testpypi.python.org/pypi
username=your_username
password=your_password

Het is veiliger om twine te gebruiken voor het uploaden van pakketten, dus zorg ervoor dat dit is geïnstalleerd.

$ pip install twine

Registreren en uploaden naar testpypi (optioneel)

Opmerking : PyPI staat geüploade pakketten niet overschrijven , dus is het verstandig om uw implementatie eerst te testen op een speciale testserver, bijv. Testpypi. Deze optie zal worden besproken. Overweeg een versieschema voor uw pakket voorafgaand aan het uploaden, zoals kalenderversie of semantische versiebeheer .

Log in of maak een nieuw account aan bij testpypi . Registratie is alleen de eerste keer vereist, hoewel meer dan één keer registreren niet schadelijk is.

$ python setup.py register -r pypitest

In de hoofdmap van uw pakket:

$ twine upload dist/* -r pypitest

Uw pakket zou nu toegankelijk moeten zijn via uw account.

testen

Maak een virtuele testomgeving. Probeer je pakket te pip install vanuit testpypi of PyPI.

# Using virtualenv
$ mkdir testenv
$ cd testenv
$ virtualenv .virtualenv
...
$ source .virtualenv/bin/activate
# Test from testpypi
(.virtualenv)  pip install --verbose --extra-index-url https://testpypi.python.org/pypi package_name
...
# Or test from PyPI
(.virtualenv) $ pip install package_name
...

(.virtualenv) $ python
Python 3.5.1 (default, Jan 27 2016, 19:16:39)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import package_name
>>> package_name.foo()
100

Als het lukt, is uw pakket het minst importeerbaar. U kunt overwegen uw API ook te testen voordat u uw definitieve upload naar PyPI uitvoert. Maak je geen zorgen als je pakket tijdens het testen is mislukt. Je kunt het nog steeds repareren, opnieuw uploaden naar testpypi en opnieuw testen.

Registreer en upload naar PyPI

Zorg ervoor dat het twine is geïnstalleerd:

$ pip install twine

Log in of maak een nieuw account aan bij PyPI .

$ python setup.py register -r pypi
$ twine upload dist/*

Dat is het! Uw pakket is nu live .

Als u een bug ontdekt, uploadt u eenvoudig een nieuwe versie van uw pakket.

Documentatie

Vergeet niet om ten minste een soort documentatie voor uw pakket op te nemen. PyPi neemt als standaardopmaaktaal reStructuredText .

Leesmij

Als uw pakket geen grote documentatie heeft, README.rst wat andere gebruikers kan helpen in het README.rst bestand. Wanneer het bestand klaar is, is er nog een nodig om PyPi te vertellen het te tonen.

Maak het setup.cfg bestand en plaats deze twee regels erin:

[metadata]
description-file = README.rst

Merk op dat als u probeert het Markdown- bestand in uw pakket te plaatsen, PyPi het als een puur tekstbestand zonder enige opmaak zal lezen.

Licensing

Het is vaak meer dan welkom om een LICENSE.txt bestand in uw pakket te plaatsen met een van de OpenSource-licenties om gebruikers te vertellen of ze uw pakket kunnen gebruiken, bijvoorbeeld in commerciële projecten of dat uw code bruikbaar is met hun licentie.

Op meer leesbare wijze worden sommige licenties uitgelegd bij TL; DR .

Pakket uitvoerbaar maken

Als uw pakket niet alleen een bibliotheek is, maar een stuk code heeft dat kan worden gebruikt als een showcase of een zelfstandige toepassing wanneer uw pakket wordt geïnstalleerd, plaatst u dat stuk code in het bestand __main__.py .

Plaats de __main__.py in de map package_name . Op deze manier kunt u het rechtstreeks vanaf de console uitvoeren:

python -m package_name

Als er geen __main__.py bestand beschikbaar is, wordt het pakket niet uitgevoerd met deze opdracht en wordt deze fout afgedrukt:

python: Geen module met de naam package_name.__main__; 'pakketnaam' is een pakket en kan niet rechtstreeks worden uitgevoerd.



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