Python Language
Python-pakketten maken
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.