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.



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