Szukaj…


Parametry

Parametr Stosowanie
name Nazwa twojej dystrybucji.
version Ciąg wersji Twojej dystrybucji.
packages Lista pakietów Pythona (czyli katalogów zawierających moduły) do uwzględnienia. Można to określić ręcznie, ale zwykle używane jest wywołanie setuptools.find_packages() .
py_modules Lista modułów najwyższego poziomu w Pythonie (to znaczy pojedynczych plików .py ) do włączenia.

Uwagi

Aby uzyskać więcej informacji na temat pakowania Pythona, zobacz:

Wprowadzenie

Do pisania oficjalnych paczek znajduje się instrukcja obsługi opakowania .

Cel setup.py

Skrypt instalacyjny stanowi centrum wszystkich działań związanych z budowaniem, dystrybucją i instalacją modułów za pomocą Distutils. Jego celem jest poprawna instalacja oprogramowania.

Jeśli wszystko, co chcesz zrobić, to rozpowszechnić moduł o nazwie foo zawarty w pliku foo.py, wówczas skrypt instalacyjny może być tak prosty:

from distutils.core import setup

setup(name='foo',
      version='1.0',
      py_modules=['foo'],
      )

Aby utworzyć dystrybucję źródłową dla tego modułu, należy utworzyć skrypt instalacyjny setup.py zawierający powyższy kod i uruchomić tę komendę z terminala:

python setup.py sdist

sdist utworzy plik archiwum (np. tarball w systemie Unix, plik ZIP w systemie Windows) zawierający skrypt instalacyjny setup.py i moduł foo.py. Plik archiwum zostanie nazwany foo-1.0.tar.gz (lub .zip) i rozpakuje się do katalogu foo-1.0.

Jeśli użytkownik końcowy chce zainstalować moduł foo, wystarczy pobrać foo-1.0.tar.gz (lub .zip), rozpakować go i - z katalogu foo-1.0 - uruchomić

python setup.py install

Dodawanie skryptów wiersza poleceń do pakietu python

Skrypty wiersza poleceń w pakietach Python są powszechne. Możesz zorganizować swój pakiet w taki sposób, że gdy użytkownik zainstaluje pakiet, skrypt będzie dostępny na jego ścieżce.

Jeśli masz pakiet greetings ze skryptem wiersza poleceń hello_world.py .

greetings/
   greetings/
      __init__.py
      hello_world.py

Możesz uruchomić ten skrypt, uruchamiając:

python greetings/greetings/hello_world.py

Jeśli jednak chcesz go tak uruchomić:

hello_world.py

Możesz to osiągnąć, dodając scripts do setup.py setup() w setup.py w następujący sposób:

from setuptools import setup
setup(
  name='greetings',
  scripts=['hello_world.py']
)

Kiedy teraz zainstalujesz pakiet pozdrowienia, hello_world.py zostanie dodany do twojej ścieżki.

Inną możliwością byłoby dodanie punktu wejścia:

entry_points={'console_scripts': ['greetings=greetings.hello_world:main']}

W ten sposób wystarczy uruchomić go w następujący sposób:

greetings

Korzystanie z metadanych kontroli źródła w pliku setup.py

setuptools_scm to oficjalnie błogosławiony pakiet, który może używać metadanych Git lub Mercurial do określania numeru wersji pakietu oraz znajdowania pakietów Pythona i danych pakietów, które można w nim uwzględnić.

from setuptools import setup, find_packages

setup(
    setup_requires=['setuptools_scm'],
    use_scm_version=True,
    packages=find_packages(),
    include_package_data=True,
)

W tym przykładzie wykorzystano obie funkcje; aby używać tylko metadanych SCM dla wersji, zamień wywołanie find_packages() na ręczną listę pakietów lub użyj tylko wyszukiwarki pakietów, usuń use_scm_version=True .

Dodawanie opcji instalacji

Jak widać w poprzednich przykładach, podstawowe użycie tego skryptu to:

python setup.py install

Ale jest jeszcze więcej opcji, takich jak instalacja pakietu i możliwość zmiany kodu i przetestowania go bez konieczności ponownej instalacji. Odbywa się to za pomocą:

python setup.py develop

Jeśli chcesz wykonywać określone działania, takie jak kompilowanie dokumentacji Sfinksa lub budowanie kodu fortran , możesz utworzyć własną opcję, taką jak ta:

cmdclasses = dict()

class BuildSphinx(Command):

    """Build Sphinx documentation."""

    description = 'Build Sphinx documentation'
    user_options = []

    def initialize_options(self):
        pass

    def finalize_options(self):
        pass

    def run(self):
        import sphinx
        sphinx.build_main(['setup.py', '-b', 'html', './doc', './doc/_build/html'])
        sphinx.build_main(['setup.py', '-b', 'man', './doc', './doc/_build/man'])

cmdclasses['build_sphinx'] = BuildSphinx

setup(
...
cmdclass=cmdclasses,
)

opcje initialize_options i finalize_options zostaną wykonane przed i po funkcji run jak sugerują to ich nazwy.

Następnie będziesz mógł wywołać swoją opcję:

python setup.py build_sphinx


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