Поиск…


параметры

параметр использование
name Название вашего дистрибутива.
version Строка версии вашего дистрибутива.
packages Список пакетов Python (то есть каталогов, содержащих модули) для включения. Это можно указать вручную, но вместо этого обычно используется вызов setuptools.find_packages() .
py_modules Список модулей Python верхнего уровня (то есть отдельных файлов .py ) для включения.

замечания

Для получения дополнительной информации о упаковке python см.

Вступление

Для написания официальных пакетов есть руководство пользователя для упаковки .

Назначение setup.py

Сценарий установки является центром всей деятельности по созданию, распределению и установке модулей с использованием Distutils. Целью является правильная установка программного обеспечения.

Если все, что вы хотите сделать, это распространять модуль под названием foo, содержащийся в файле foo.py, тогда ваш сценарий установки может быть таким же простым, как это:

from distutils.core import setup

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

Чтобы создать исходный дистрибутив для этого модуля, вы должны создать сценарий установки, setup.py, содержащий вышеуказанный код, и запустить эту команду с терминала:

python setup.py sdist

sdist создаст файл архива (например, tarball в Unix, ZIP-файл в Windows), содержащий ваш скрипт setup.py и ваш модуль foo.py. Файл архива будет называться foo-1.0.tar.gz (или .zip) и распакуется в каталог foo-1.0.

Если конечный пользователь хочет установить ваш модуль foo, все, что ей нужно сделать, это загрузить foo-1.0.tar.gz (или .zip), распаковать его и-из запуска каталога foo-1.0

python setup.py install

Добавление сценариев командной строки в пакет python

Скрипты командной строки внутри пакетов python являются общими. Вы можете организовать свой пакет таким образом, чтобы, когда пользователь устанавливает пакет, скрипт будет доступен по их пути.

Если у вас есть пакет greetings , в котором был скрипт командной строки hello_world.py .

greetings/
   greetings/
      __init__.py
      hello_world.py

Вы можете запустить этот скрипт, выполнив:

python greetings/greetings/hello_world.py

Однако, если вы хотите запустить его так:

hello_world.py

Вы можете добиться этого, добавив scripts в свою setup() в setup.py следующим образом:

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

Когда вы установите пакет приветствия, hello_world.py будет добавлен в ваш путь.

Другая возможность - добавить точку входа:

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

Таким образом, вам просто нужно запустить его, как:

greetings

Использование метаданных управления версиями в файле setup.py

setuptools_scm - официально благословленный пакет, который может использовать метаданные Git или Mercurial для определения номера версии вашего пакета и поиска пакетов Python и данных пакета для включения в него.

from setuptools import setup, find_packages

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

В этом примере используются обе функции; для использования только метаданных SCM для версии, замените вызов find_packages() на ваш список пакетов вручную или используйте только use_scm_version=True пакетов, удалите use_scm_version=True .

Добавление параметров установки

Как видно из предыдущих примеров, базовое использование этого скрипта:

python setup.py install

Но есть еще больше возможностей, таких как установка пакета и возможность изменить код и протестировать его, не переустанавливая его. Это делается с использованием:

python setup.py develop

Если вы хотите выполнить определенные действия, такие как компиляция документации Sphinx или создание кода fortran , вы можете создать свой собственный вариант следующим образом:

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,
)

initialize_options и finalize_options будут выполняться до и после функции run поскольку их имена предполагают это.

После этого вы сможете позвонить по своему выбору:

python setup.py build_sphinx


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow