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=
Таким образом, вы просто должны запустить его так:
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 .
Добавление параметров установки
Как видно из предыдущих примеров, основное использование этого скрипта:
python setup.py install
Но есть еще больше возможностей, таких как установка пакета и возможность изменить код и протестировать его без необходимости переустановки. Это делается с помощью:
python setup.py develop
Если вы хотите , чтобы выполнять определенные действия , как составление документации сфинкса или строительство 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
Установка скрипта через setuptools#
Скрипты с интерфейсом командной строки можно запускать с указанием shebang и сделав скрипт исполняемым или использовать setuptools.
Setuptools — это набор утилит для работы с пакетами Python. В нем есть масса возможностей, тут рассматривается лишь базовые пример. Подробнее в документации
Преимущества использования setuptools:
- запуск будет работать на Linux/Windows одинаково
- setuptools умеет работать с Python package
Пример базового использования setuptools#
Пример использования setuptools для скрипта example_05_pomodoro_timer.py.
Скрипт example_05_pomodoro_timer.py (вывод сокращен):
from datetime import datetime, date, timedelta import time import sys import click # . @click.command() @click.option("--pomodoros_to_run", "-r", default=5, show_default=True, type=int) @click.option("--work_minutes", "-w", default=25, show_default=True, type=int) @click.option("--short_break", "-s", default=5, show_default=True, type=int) @click.option("--long_break", "-l", default=30, show_default=True, type=int) @click.option("--set_size", "-p", default=4, show_default=True, type=int) def cli(pomodoros_to_run, work_minutes, short_break, long_break, set_size): session_stats = "total": pomodoros_to_run, "done": 0, "todo": pomodoros_to_run> global stats stats = update_session_stats(session_stats) click.clear() all_pomodoros = list(range(1, pomodoros_to_run + 1)) pomodoro_sets = sets_of_pomodoros(all_pomodoros, set_size) for pomo_set in pomodoro_sets: run_pomodoro_set(pomo_set, work_minutes, short_break, long_break) if __name__ == "__main__": cli()
from setuptools import setup setup( name='pomodoro', version='1.0', py_modules=['example_05_pomodoro_timer'], install_requires=[ 'Click', ], entry_points=''' [console_scripts] pomodoro=example_05_pomodoro_timer:cli ''', )
Это очень базовый пример файла setup.py, но для своих скриптов его может быть вполне достаточно. Параметры setup:
- name=’pomodoro’ — это имя приложения/скрипта
- version=’1.0′ — версия скрипта
- py_modules=[‘example_05_pomodoro_timer’] — основной скрипт, который надо запускать
- install_requires=[‘Click’] — зависимости скрипта
И последний параметр entry_points :
entry_points=''' [console_scripts] pomodoro=example_05_pomodoro_timer:cli '''
- первое слово pomodoro — это команда, которая вызывает скрипт,
- example_05_pomodoro_timer — какой скрипт запустить (то же самое, что в py_modules)
- cli — в нашем случае это имя функции к которой привязана настройка click
Установка скрипта после создания setup.py (тут есть много вариантов, в часности запуск установки в development режиме -e):
$ pip install . Processing /home/vagrant/repos/advanced-pyneng-2/advpyneng-online-2-sep-nov-2020/examples/03_click Requirement already satisfied: Click in /home/vagrant/venv/pyneng-py3-8-0/lib/python3.8/site-packages (from pomodoro==1.0) (7.1.2) Building wheels for collected packages: pomodoro Building wheel for pomodoro (setup.py) . done Created wheel for pomodoro: filename=pomodoro-1.0-py3-none-any.whl size=2416 sha256=15a4751c3e03ab7da4f5e2ee979f54fadcc4a1724ce8f6994ee5966c3c8af193 Stored in directory: /tmp/pip-ephem-wheel-cache-n_s8xn0d/wheels/b3/ff/4f/e229093f911f6ad2ba16bbb55fbc28dd4cf701f7fe60d9333a Successfully built pomodoro Installing collected packages: pomodoro Successfully installed pomodoro-1.0
После этого скрипт можно вызывать по pomodoro в любом месте:
[~/repos/advanced-pyneng-2/advpyneng-online-2-sep-nov-2020] $ pomodoro It's time to work! Pomodoro 1 Work: 0:00:01^C Aborted!
$ pip uninstall pomodoro Found existing installation: pomodoro 1.0 Uninstalling pomodoro-1.0: Would remove: /home/vagrant/venv/pyneng-py3-8-0/bin/pomodoro /home/vagrant/venv/pyneng-py3-8-0/lib/python3.8/site-packages/example_05_pomodoro_timer.py /home/vagrant/venv/pyneng-py3-8-0/lib/python3.8/site-packages/pomodoro-1.0.dist-info/* Proceed (y/n)? y Successfully uninstalled pomodoro-1.0
Как установить библиотеку в Python: руководство для новичка
Знания расширяют сознание, а библиотеки — возможности языков программирования. Расскажем, как подключить их в Python.



Наталья Березовская
Автор в сфере IT, digital, экономики и финансов. Ведёт некоммерческий проект для начинающих писателей «ЛитЦех».
Мы уже рассказывали, как установить Python на различные операционные системы. Если хотите расширить возможности языка, используйте менеджер пакетов — именно с ним подключают библиотеки и модули. А если стоит вопрос, как научиться программировать на Python и получить работу, записывайтесь на курс «Python-разработчик».
Ручная установка
В этом способе не нужен традиционный установщик пакетов pip — модуль подключается прямо из источника. Это удобно, когда у вас несколько версий Python и нужно импортировать модуль в разные. Рекомендуем научиться делать это сразу.
1. Установите setuptools
Для этого скачайте файл с PyPI и извлеките его в системе.

2. Откройте сессию терминала
Поменяйте каталог на папку с файлом setup.
3. Запустите команду:
И автоматически установите любой необходимый пакет. Однако есть ограничения:
- Он может попробовать запустить пакет, который еще не загрузился до конца.
- С помощью easy install нельзя провести деинсталляцию.
Из-за этих и других причин в сообществе языка Python придумали и реализовали программу pip.
Установка pip
Она появилась в Python 3.4 и скачивается вместе с самим языком, но если у вас более ранняя версия, то установите pip вручную:
- Зайдите в PyPI и скачайте скриптget-pip.py.
- Затем выполните команду:
python get-pip.py
Установятся setuptools, если ранее его не было на компьютере, и сам pip. С его помощью подключают любые библиотеки и файлы — всё, что только может установить easy install. Но теперь для этого будет использоваться иная команда:
pip install package_name
А для обновления пакета применяйте:
Установка библиотек python без pip
Проблема заключается в том, что сеть в которой я работаю почему то блокирует установку библиотек python через pip install (выдает ошибку связанную с SSL сертификатами) см. скрин. Проблему уже несколько месяцев никто не может решить. Возможно есть способ установить библиотеку python скачав файлы библиотеки с pypi.org, подскажите пожалуйста как это можно сделать?

Отслеживать
Denis Osadchiy
задан 2 фев 2021 в 11:57
Denis Osadchiy Denis Osadchiy
11 1 1 серебряный знак 4 4 бронзовых знака
Попробуйте pip install —trusted-host files.pythonhosted.org %package%
2 фев 2021 в 12:55
Из-за чего вообще возникает ошибка SSL — возможно давно систему не обновляли, какие-то корневые сертификаты SSL могли истечь. Теоретически способ из комментария выше должен помочь.
15 фев 2022 в 9:11
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Скачать .whl файл и установить его pip install path/to/file.whl
Или скачать tar.gz , распаковать и установить через python setup.py install из нужной папки.
Отслеживать
ответ дан 2 фев 2021 в 12:08
26.3k 7 7 золотых знаков 32 32 серебряных знака 48 48 бронзовых знаков
Добавил 2 скрина в описание. Попробовал установить ‘pip install path/to/file.whl’ таким способом, не понимаю пакет установился или нет. Jupyter не видит его по крайней мере
2 фев 2021 в 12:29
Он зависим от других библиотек. Их также надо поставить.
2 фев 2021 в 12:37
От каких библиотек? Numpy?
2 фев 2021 в 12:47
lifetimes нужно писать с маленькой буквы
2 фев 2021 в 12:47
Все ровно не видет: «No module named ‘lifetimes’ »
2 фев 2021 в 12:49
Можно с другого компьютера (с той же операционной системой, битностью, и той же версией Python) загрузить нужный пакет и все его зависимости как whl файлы ( Lifetimes — имя основного пакета, который нам нужно установить):
pip install wheel pip wheel -w wheels/ Lifetimes
Появится папка wheels с примерно таким набором файлов (тестировал на Windows 7 x64, Python 3.8.6 x64):

Нужно эту папку перенести на комп, где возникают ошибки SSL, там установить все с помощью следующей команды:
pip install --no-index -f wheels/ Lifetimes