Может кто-нибудь объяснить, что setup.py
такое и как его можно настроить или использовать?
python
python-3.x
setup.py
pypi
python-packaging
Программное обеспечение Энтузиаст
источник
источник
Ответы:
setup.py
это файл python, который обычно говорит вам, что модуль / пакет, который вы собираетесь установить, был упакован и распространен с Distutils, который является стандартом для распространения модулей Python.Это позволяет вам легко устанавливать пакеты Python. Часто достаточно написать:
pip
будет использовать setup.py для установки вашего модуля. Избегайте звонковsetup.py
напрямую.https://docs.python.org/3/installing/index.html#installing-index
источник
setup.py
файла.Это помогает установить пакет Python
foo
на ваш компьютер (также может быть в немvirtualenv
), чтобы вы могли импортировать пакетfoo
из других проектов, а также из [I] приглашений Python.Это делает подобную работу
pip
, иeasy_install
т.д.,С помощью
setup.py
Давайте начнем с некоторых определений:
Пакет - папка / каталог, содержащий
__init__.py
файл.Модуль - действительный файл Python с
.py
расширением.Распространение - как один пакет связан с другими пакетами и модулями .
Допустим, вы хотите установить пакет с именем
foo
. Тогда вы делаете,Вместо этого, если вы не хотите на самом деле установить его, но все же хотели бы использовать его. Тогда делай,
Эта команда создаст символические ссылки на исходный каталог в пакетах сайта вместо копирования вещей. Из-за этого это довольно быстро (особенно для больших пакетов).
Создание
setup.py
Если у вас есть дерево пакетов, как,
Затем вы делаете следующее в своем
setup.py
скрипте, чтобы его можно было установить на некотором компьютере:Вместо этого, если ваше дерево пакетов более сложное, как показано ниже:
Тогда ваш
setup.py
в этом случае будет выглядеть так:Добавьте больше материала в (
setup.py
) и сделайте его достойным:long_description
Используется в pypi.org как описание README из пакета.И, наконец, теперь вы готовы загрузить свой пакет на PyPi.org, чтобы другие могли установить ваш пакет с помощью
pip install yourpackage
.Первый шаг - запросить имя пакета и пространство в pypi, используя:
Как только ваше имя пакета зарегистрировано, никто не может требовать или использовать его. После успешной регистрации вы должны загрузить свой пакет туда (в облако),
При желании вы также можете подписать пакет с
GPG
помощью,Бонус : см. Образец
setup.py
из реального проекта здесь:torchvision-setup.py
источник
requests
) имеет этот проект, чтобы явным образом привести хороший пример setup.py - github.com/kennethreitz/setup.pysetup.py
это ответ Python на многоплатформенный установщик иmake
файл.Если вы знакомы с установками командной строки, то
make && make install
переводится какpython setup.py build && python setup.py install
.Некоторые пакеты являются чистым Python и компилируются только байтами. Другие могут содержать собственный код, для которого потребуется собственный компилятор (например,
gcc
илиcl
) и модуль интерфейса Python (например,swig
илиpyrex
).источник
python setup.py install
на самом деле запускаетсяpython setup.py build
первым (поэтому вам не нужно запускать их отдельно, кроме случаев, когда это необходимо). Я считаю, чтоmake
всегда нужно запускать вручную перед запускомmake install
.make
не требует каких-либо конкретных параметров (или упорядочения): полностью зависит от создателя,Makefile
какие «цели» доступны (и в каком порядке их нужно вызывать). Поскольку «голые»Makefile
(как правило) не очень переносимы, они, как правило, генерируются с помощью таких команд, как./configure
(autotools) илиcmake .
(cmake), и поэтому эти программы сами определяют, нужно ли вам явно запускатьсяmake
раньшеmake install
или нет.Если вы загрузили пакет с «setup.py» в корневую папку, вы можете установить его, запустив
Если вы разрабатываете проект и вам интересно, для чего этот файл полезен, обратитесь к документации Python по написанию сценария установки
источник
setup.py
скрипт Python, который обычно поставляется с библиотеками или программами, написанными на этом языке. Его цель - правильная установка программного обеспечения.Многие пакеты используют
distutils
каркас в сочетании сsetup.py
.http://docs.python.org/distutils/
источник
setup.py можно использовать в двух сценариях. Во-первых, вы хотите установить пакет Python. Во-вторых, вы хотите создать свой собственный пакет Python. Обычно стандартный пакет Python содержит пару важных файлов, таких как setup.py, setup.cfg и Manifest.in. Когда вы создаете пакет Python, эти три файла будут определять (содержимое в PKG-INFO в папке egg-info) имя, версию, описание, другие необходимые установки (обычно в файле .txt) и некоторые другие параметры. setup.cfg читается setup.py при создании пакета (может быть tar.gz). Manifest.in - это место, где вы можете определить, что должно быть включено в ваш пакет. В любом случае вы можете сделать кучу вещей, используя setup.py, как
Существует множество других команд, которые можно использовать с setup.py. для помощи
источник
python setup.py --help-commands
. Очень полезно при копании в setup.py.Когда вы загружаете пакет с
setup.py
открытым терминалом (Mac, Linux) или командной строкой (Windows). Используяcd
и помогая вам с помощью кнопки Tab, установите путь прямо к папке, в которую вы скачали файл и где она находитсяsetup.py
:Нажмите Enter, вы должны увидеть что-то вроде этого:
Затем введите после этого
python setup.py install
:Нажмите
enter
. Выполнено!источник
Чтобы установить загруженный пакет Python, вы извлекаете архив и запускаете скрипт setup.py внутри:
Для меня это всегда было странно. Было бы более естественно указать менеджер загрузки при загрузке, как это было бы, например, в Ruby и Nodejs.
gem install rails-4.1.1.gem
Менеджер пакетов тоже удобнее, потому что он знаком и надежен. С другой стороны, каждый
setup.py
новый, потому что он специфичен для пакета. Это требует веры в соглашение «Я верю, что этот setup.py принимает те же команды, что и другие, которые я использовал в прошлом». Это прискорбный налог на умственную силу воли.Я не говорю, что рабочий процесс setup.py менее безопасен, чем менеджер пакетов (я понимаю, что Пип просто запускает setup.py внутри), но, конечно, я чувствую, что это странно и раздражающе. Существует гармония для команд, которые все находятся в одном приложении диспетчера пакетов. Вы могли бы даже полюбить это.
источник
setup.py
это файл Python, как и любой другой. Оно может принимать любое имя, за исключением соглашения, что оно названоsetup.py
так, чтобы не было отдельной процедуры с каждым скриптом.Чаще всего
setup.py
используется для установки модуля Python, но для других целей сервера:Модули:
Возможно, это самое известное использование
setup.py
в модулях. Хотя они могут быть установлены с использованиемpip
старых версий Python, они не включеныpip
по умолчанию, и их необходимо устанавливать отдельно.Если вы хотите установить модуль, но не хотите устанавливать его
pip
, единственной альтернативой была установка модуля изsetup.py
файла. Это может быть достигнуто с помощьюpython setup.py install
. Это установит модуль Python в корневой словарь (безpip
,easy_install
ect).Этот метод часто используется, когда
pip
не удастся. Например, если правильная версия Python нужного пакета недоступна,pip
возможно, из-за того, что он больше не поддерживается, загрузка исходного кода и запускpython setup.py install
будут выполнять то же самое, за исключением случаев, когда требуются скомпилированные двоичные файлы (но будут игнорироваться Версия Python - если не возвращена ошибка).Другое использование
setup.py
- установка пакета из исходного кода. Если модуль все еще находится в стадии разработки, файлы колеса не будут доступны, и единственный способ установить это установить непосредственно из исходного кода.Сборка расширений Python:
Когда модуль собран, его можно преобразовать в модуль, готовый к распространению, используя скрипт установки distutils . После сборки их можно установить с помощью команды выше.
Сценарий установки легко создать, и как только файл будет правильно настроен, его можно скомпилировать, запустив
python setup.py build
(см. Ссылку для всех команд).Еще раз он назван
setup.py
для простоты использования и по соглашению, но может принимать любое имя.Cython:
Другое известное использование
setup.py
файлов включает скомпилированные расширения. Для этого требуется скрипт установки с пользовательскими значениями. Они позволяют быстрое (но после компиляции зависит от платформы) выполнение. Вот простой пример из документации :Это может быть скомпилировано через
python setup.py build
Cx_Freeze:
Еще один модуль, требующий установки скрипта
cx_Freeze
. Это преобразует скрипт Python в исполняемые файлы. Это позволяет включать многие команды, такие как описания, имена, значки, пакеты, исключать ect и после запуска создаст распространяемое приложение. Пример из документации :Это может быть скомпилировано через
python setup.py build
.Так что же такое
setup.py
файл?Проще говоря, это скрипт, который строит или настраивает что-то в среде Python.
Распространяемый пакет должен содержать только один сценарий установки, но нередко объединять несколько вместе в один сценарий установки. Обратите внимание, что это часто включает,
distutils
но не всегда (как я показал в моем последнем примере). Следует помнить, что каким-то образом настраивается пакет / скрипт Python.Он принимает имя, поэтому всегда можно использовать одну и ту же команду при сборке или установке.
источник
Для простоты setup.py запускается так же, как
"__main__"
при вызове функций установки других упомянутых ответов. Внутри setup.py вы должны поместить все необходимое для установки вашего пакета.Общие функции setup.py
В следующих двух разделах обсуждаются две вещи, которые есть во многих модулях setup.py.
setuptools.setup
Эта функция позволяет вам указывать атрибуты проекта, такие как имя проекта, версия .... Самое главное, эта функция позволяет вам устанавливать другие функции, если они упакованы правильно. См. Эту веб-страницу для примера setuptools.setup
Эти атрибуты setuptools.setup позволяют устанавливать пакеты следующих типов:
Пакеты, которые импортированы в ваш проект и перечислены в PyPI с помощью setuptools.findpackages :
packages=find_packages(exclude=["docs","tests", ".gitignore", "README.rst","DESCRIPTION.rst"])
Пакеты не в PyPI , но могут быть загружены с URL-адреса с использованием зависимостей
dependency_links=["http://peak.telecommunity.com/snapshots/",]
Пользовательские функции
В идеальном мире
setuptools.setup
все для вас. К сожалению, это не всегда так. Иногда вам нужно выполнить определенные действия, такие как установка зависимостей с помощью команды subprocess , чтобы система, в которой вы устанавливаете, находилась в правильном состоянии для вашего пакета. Старайтесь избегать этого, эти функции сбивают с толку и часто отличаются в зависимости от ОС и даже распространения .источник