Python Language
Skapa Python-paket
Sök…
Anmärkningar
Pypaprojektet innehåller ett komplett, lätt modifierbart mall setup.py
som demonstrerar ett stort antal funktioner som installationsverktyg har att erbjuda.
Introduktion
Varje paket kräver en setup.py
fil som beskriver paketet.
Tänk på följande katalogstruktur för ett enkelt paket:
+-- package_name
| |
| +-- __init__.py
|
+-- setup.py
__init__.py
innehåller endast linjen def foo(): return 100
.
Följande setup.py
definierar paketet:
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 är bra att testa paketinstallationer utan att ändra dina andra Python-miljöer:
$ 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
Laddar upp till PyPI
När din setup.py
är fullt funktionell (se Introduktion ) är det mycket enkelt att ladda upp ditt paket till PyPI .
Installera en .pypirc-fil
Den här filen lagrar inloggningar och lösenord för att verifiera dina konton. Det lagras vanligtvis i din hemkatalog.
# .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
Det är säkrare att använda twine
för att ladda upp paket, så se till att det är installerat.
$ pip install twine
Registrera och ladda upp till testpypi (valfritt)
Obs : PyPI tillåter inte att överskriva uppladdade paket , så det är skonsamt att först testa din distribution på en dedikerad testserver, t.ex. testpypi. Detta alternativ kommer att diskuteras. Överväg ett versioneringsschema för ditt paket innan du laddar upp, som kalenderversion eller semantisk versionering .
Antingen logga in eller skapa ett nytt konto på testpypi . Registrering krävs endast första gången, även om det inte är skadligt att registrera sig mer än en gång.
$ python setup.py register -r pypitest
I ditt rotkatalog för ditt paket:
$ twine upload dist/* -r pypitest
Ditt paket ska nu vara tillgängligt via ditt konto.
Testning
Gör en test virtuell miljö. Försök att pip install
ditt paket från antingen testpypi eller 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
Om det lyckas är ditt paket minst importerbart. Du kan överväga att testa ditt API också innan du slutligen laddar upp till PyPI. Om ditt paket misslyckades under testen, oroa dig inte. Du kan fortfarande fixa det, ladda upp till testpypi igen och testa igen.
Registrera och ladda upp till PyPI
Se till att twine
är installerat:
$ pip install twine
Antingen logga in eller skapa ett nytt konto på PyPI .
$ python setup.py register -r pypi
$ twine upload dist/*
Det är allt! Ditt paket är nu live .
Om du upptäcker ett fel kan du bara ladda upp en ny version av ditt paket.
Dokumentation
Glöm inte att ta med åtminstone någon form av dokumentation för ditt paket. PyPi tar som standard formateringsspråk reStructuredText .
Viktigt
Om ditt paket inte har en stor dokumentation, inkludera vad som kan hjälpa andra användare i filen README.rst
. När filen är klar behövs ytterligare en för att berätta för PyPi att visa den.
Skapa filen setup.cfg
och lägg dessa två rader i den:
[metadata]
description-file = README.rst
Observera att om du försöker sätta Markdown- filen i ditt paket kommer PyPi att läsa den som en ren textfil utan någon formatering.
licensiering
Det är ofta mer än välkommen att lägga en LICENSE.txt
fil i ditt paket med ett av OpenSource-licensen för att berätta för användare om de kan använda ditt paket till exempel i kommersiella projekt eller om din kod kan användas med deras licens.
På mer läsbart sätt förklaras vissa licenser på TL; DR .
Gör paket körbart
Om ditt paket inte bara är ett bibliotek utan har en kodkod som kan användas antingen som ett showcase eller som ett fristående program när ditt paket är installerat, lägger du den __main__.py
i __main__.py
filen.
Lägg __main__.py
i mappen package_name
. På det här sättet kan du köra det direkt från konsolen:
python -m package_name
Om det inte finns någon __main__.py
fil, kommer inte paketet att köras med det här kommandot och detta fel kommer att skrivas ut:
python: Ingen modul med namnet
package_name.__main__;
"package_name" är ett paket och kan inte köras direkt.