Szukaj…


Uwagi

Przykładowy projekt pypa zawiera kompletny, łatwo modyfikowalny szablon setup.py który pokazuje szeroki zakres możliwości, jakie oferuje narzędzie do konfiguracji.

Wprowadzenie

Każdy pakiet wymaga pliku setup.py , który opisuje pakiet.

Rozważ następującą strukturę katalogów dla prostego pakietu:

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

__init__.py zawiera tylko wiersz def foo(): return 100 .

Poniższy setup.py zdefiniuje pakiet:

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 jest świetny do testowania instalacji pakietów bez modyfikowania innych środowisk Python:

$ 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

Przesyłanie do PyPI

Gdy setup.py będzie w pełni funkcjonalny (patrz Wprowadzenie ), bardzo łatwo można przesłać pakiet do PyPI .

Skonfiguruj plik .pypirc

Ten plik przechowuje loginy i hasła do uwierzytelnienia kont. Zazwyczaj jest przechowywany w twoim katalogu domowym.

# .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

Bezpieczniej jest używać twine do przesyłania pakietów, więc upewnij się, że jest zainstalowany.

$ pip install twine

Zarejestruj się i prześlij do testpypi (opcjonalnie)

Uwaga : PyPI nie zezwala na zastępowanie przesłanych pakietów , więc rozważne jest najpierw przetestowanie wdrożenia na dedykowanym serwerze testowym, np. Testpypi. Ta opcja zostanie omówiona. Rozważ schemat wersjonowania pakietu przed przesłaniem, taki jak wersja kalendarza lub wersja semantyczna .

Zaloguj się lub utwórz nowe konto w testpypi . Rejestracja jest wymagana tylko za pierwszym razem, chociaż rejestracja więcej niż raz nie jest szkodliwa.

$ python setup.py register -r pypitest

Znajdując się w katalogu głównym pakietu:

$ twine upload dist/* -r pypitest

Twoja paczka powinna być teraz dostępna za pośrednictwem twojego konta.

Testowanie

Utwórz testowe środowisko wirtualne. Spróbuj pip install pakiet z testpypi lub 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

Jeśli się powiedzie, twój pakiet można najmniej importować. Możesz również rozważyć przetestowanie interfejsu API przed ostatecznym przesłaniem do PyPI. Jeśli pakiet nie powiódł się podczas testowania, nie martw się. Nadal możesz to naprawić, przesłać ponownie do testpypi i przetestować ponownie.

Zarejestruj się i prześlij do PyPI

Upewnij się, że twine jest zainstalowany:

$ pip install twine

Zaloguj się lub utwórz nowe konto w PyPI .

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

Otóż to! Twój pakiet jest już dostępny .

Jeśli zauważysz błąd, po prostu prześlij nową wersję pakietu.

Dokumentacja

Nie zapomnij dołączyć przynajmniej jakiejś dokumentacji do swojego pakietu. PyPi przyjmuje jako domyślny język formatowania reStructuredText .

Readme

Jeśli twój pakiet nie ma dużej dokumentacji, README.rst to, co może pomóc innym użytkownikom w pliku README.rst . Gdy plik jest gotowy, potrzebny jest inny, aby poinformować PyPi, aby go pokazał.

Utwórz plik setup.cfg i umieść w nim dwa wiersze:

[metadata]
description-file = README.rst

Pamiętaj, że jeśli spróbujesz umieścić plik Markdown w swoim pakiecie, PyPi odczyta go jako czysty plik tekstowy bez żadnego formatowania.

Koncesjonowanie

Często bardziej niż mile widziane jest umieszczenie pliku LICENSE.txt w pakiecie z jedną z licencji OpenSource, aby poinformować użytkowników, czy mogą korzystać z twojego pakietu na przykład w projektach komercyjnych lub czy twój kod jest użyteczny z ich licencją.

W bardziej czytelny sposób niektóre licencje są wyjaśnione na TL; DR .

Wykonanie pakietu

Jeśli Twój pakiet nie jest tylko biblioteką, ale zawiera fragment kodu, który może być używany jako prezentacja lub samodzielna aplikacja po zainstalowaniu pakietu, umieść ten fragment kodu w pliku __main__.py .

Umieść plik __main__.py w folderze package_name . W ten sposób będziesz mógł uruchomić go bezpośrednio z konsoli:

python -m package_name

Jeśli nie ma dostępnego pliku __main__.py , pakiet nie uruchomi się z tym poleceniem, a błąd zostanie wydrukowany:

python: Brak modułu o nazwie package_name.__main__; „nazwa_pakietu” to pakiet i nie można go bezpośrednio wykonać.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow