Что setup.py?

может кто-нибудь объяснить, что такое setup.py и как его можно настроить или использовать?

10 ответов


setup.py - это файл python, который обычно сообщает вам, что модуль/пакет, который вы собираетесь установить, был упакован и распространен с дистрибутивами, что является стандартом для распространения модулей Python.

Это позволяет легко устанавливать пакеты Python. Часто достаточно написать:

$ python setup.py install

и модуль установит себя.

http://docs.python.org/install/index.html


это помогает установить пакет python foo на вашей машине (также может быть в virtualenv), так что вы можете импортировать пакет foo из других проектов, а также из подсказок [I]Python.

не задание pip, easy_install etc.,


используя setup.py

давайте начнем с некоторых определений:

пакета - КАТАЛОГ/КАТАЛОГ который содержит .
модуль - допустимый файл python с


setup.py является ответом Python на мультиплатформенный установщик и .

если вы знакомы с установками командной строки, то make && make install переводится как python setup.py build && python setup.py install.

некоторые пакеты являются чистым Python и компилируются только байтами. Другие могут содержать собственный код, для которого потребуется собственный компилятор (например,gcc или cl) и модуль сопряжения Python (например,swig или pyrex).


Если вы загрузили пакет, который имеет "setup.py" в корневой папке вы можете установить его, запустив

python setup.py install

Если вы разрабатываете проект и Вам интересно, для чего этот файл полезен, проверьте документация Python по написанию сценария установки


setup.py - Это скрипт Python, который обычно поставляется с библиотеками или программами, написанными на этом языке. Его цель-правильная установка программного обеспечения.

многие пакеты используют distutils рамки в сочетании с setup.py.

http://docs.python.org/distutils/


setup.py может использоваться в двух сценариях, во-первых, вы хотите установить пакет Python. Во-вторых, вы хотите создать свой собственный пакет python. Обычно стандартный пакет Python имеет пару важных файлов, таких как setup.py, setup.cfg и Манифест.внутри. Когда вы создаете пакет Python, эти три файла будут определять (содержимое в pkg-INFO в папке egg-info) имя, версию, описание, другие необходимые установки (обычно в .txt файл) и несколько других параметров. установка.cfg это читать по setup.py пока пакет создан (может быть tar.gz). Манифест.in-это то, где вы можете определить, что должно быть включено в ваш пакет. В любом случае вы можете сделать кучу вещей, используя setup.py как

python setup.py build
python setup.py install
python setup.py sdist <distname> upload [-r urltorepo]  (to upload package to pypi or local repo)

есть куча других команд, которые могут быть использованы с setup.py . за помощью!--3-->

python setup.py --help-commands

при загрузке пакета с setup.py откройте терминал (Mac, Linux) или командную строку (Windows). Используя cd и помогая вам с помощью кнопки Tab установить путь прямо к папке, где вы загрузили файл и где есть setup.py :

iMac:~ user $ cd path/pakagefolderwithsetupfile/

нажмите enter, вы должны увидеть что-то вроде этого:

iMac:pakagefolderwithsetupfile user$

затем введите после этого python setup.py install :

iMac:pakagefolderwithsetupfile user$ python setup.py install

пресс enter. Готово!


чтобы установить загруженный пакет Python, вы извлекаете архив и запускаете setup.py скрипт внутри:

python setup.py install

мне это всегда казалось странным. Было бы более естественно указать менеджер пакетов на загрузку, как это было бы в Ruby и Nodejs, например. gem install rails-4.1.1.gem

менеджер пакетов также более удобен, потому что он знаком и надежен. С другой стороны, каждый setup.py является новым, потому что он специфичен для пакета. Она требует веры в конвенция "я доверяю этому setup.py принимает те же команды, что и другие, которые я использовал в прошлом". Это прискорбный налог на умственную силу воли.

Я не говорю, что setup.py рабочий процесс менее безопасен, чем менеджер пакетов (я понимаю, что Pip просто запускает setup.py внутри), но, конечно, я чувствую, что это неловко и неприятно. Существует гармония в командах, которые все находятся в одном приложении диспетчера пакетов. Вы даже можете полюбить его.


чтобы сделать его простым, setup.py выполняется как "__main__" когда вы называете установить функции другие ответы упомянули. Внутри setup.py, вы должны поставить все необходимое для установки пакета.

общие setup.py функции

в следующих двух разделах обсуждаются две вещи setup.py модули есть.

setuptools.setup

эта функция позволяет указать атрибуты как имя проект, версия.... Самое главное, эта функция позволяет устанавливать другие функции, если они упакованы правильно. См.этот сайт для примера setuptools.установка

Эти атрибуты setuptools.настройка включить установку этих типов пакетов:

  • пакеты, импортированные в ваш проект и перечисленные в PyPI используя setuptools.findpackages:

    packages=find_packages (exclude=["docs", "tests",".gitignore", " README.первое", " описание.первый"])

  • пакеты не в PyPI, но можно загрузить с URL-адреса с помощью dependency_links

    dependency_links=["http://peak.telecommunity.com/snapshots/",]

пользовательские функции

в идеальном мире, setuptools.setup будет обрабатывать все для вас. К сожалению, это не всегда так. Иногда вам нужно делать определенные вещи, такие как установка зависимостей с помощью подпроцесс команда, чтобы получить систему, которую вы устанавливаете в правильном состоянии для вашего пакета. Постарайтесь избежать этого, эти функции запутываются и часто отличаются между OS и даже распределение.


setup.py есть файл Python, как и любой другой. Он может принимать любое имя, кроме условного, он называется setup.py чтобы не было другой процедуры с каждым скриптом.

чаще всего setup.py используется для установки модуля Python, но сервер других целей:

модули:

возможно, это самое известное использование setup.py в модули. Хотя они могут быть установлены с помощью pip, старые версии Python не включали pip по умолчанию и они должны быть установлены отдельно.

если вы хотите установить модуль, но не хотите устанавливать pip, почти единственной альтернативой было установить модуль из . Это может быть достигнуто с помощью python setup.py install. Это установит модуль Python в корневой словарь (без pip, easy_install ect).

этот метод часто используется, когда pip не удастся. Например, если правильная версия Python желаемая пакет не доступен через pipвозможно, потому, что он больше не поддерживается, загрузка источника и запуск python setup.py install выполнит то же самое, за исключением случаев, когда требуются скомпилированные двоичные файлы (но будет игнорировать версию Python-если не будет возвращена ошибка).

другое использование setup.py установить пакет из исходников. Если модуль все еще находится в разработке, файлы wheel будут недоступны, и единственный способ установить-установить из источника непосредственно.

создание расширений Python:

когда модуль был построен его можно преобразовать в модуль готовый для распределения используя сценарий установки distutils. После сборки они могут быть установлены с помощью команды выше.

сценарий установки легко построить, и как только файл был правильно настроен и может быть скомпилирован путем запуска python setup.py build (см. ссылку для всех команд).

еще раз он называется setup.py для простоты использования и по соглашению, но может принимать любое имя.

на Cython:

еще одно знаменитое использование setup.py файлы скомпилированных расширений. Для этого требуется сценарий установки с пользовательскими значениями. Они позволяют быстро (но после компиляции зависят от платформы) выполнять. Вот простой пример из документация:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    name = 'Hello world app',
    ext_modules = cythonize("hello.pyx"),
)

это можно скомпилировать через python setup.py build

Cx_Freeze:

другой модуль, требующий сценария установки, -cx_Freeze. Это преобразует скрипт Python в исполняемые файлы. Это позволяет многим командам, таким как описания, имена, значки, пакеты, чтобы включить, исключить ect и после запуска будет производить распространяемое приложение. Пример из документация:

import sys
from cx_Freeze import setup, Executable
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]} 

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(  name = "guifoo",
        version = "0.1",
        description = "My GUI application!",
        options = {"build_exe": build_exe_options},
        executables = [Executable("guifoo.py", base=base)])

это может быть составлен через python setup.py build.

что это setup.py файл?

просто это скрипт, который создает или настраивает что-то в среде Python.

пакет при распространении должен содержать только один сценарий установки, но это не редкость, чтобы объединить несколько вместе в один сценарий установки. Обратите внимание, что это часто включает distutils но не всегда (как я показал в моем последнем примере). Вещь, чтобы помнить, что она просто настраивает пакет/скрипт Python каким-то образом.

он принимает имя так одна и та же команда всегда может быть использована при построении или установке.