Как установить библиотеку определенной версии в Python?


Привет всем! Делаю тут бота для Instagram (кстати, подписывайтесь на мой ) — который будет лайкать посты по указанным тегам, подписываться по заданным параметрам (и отписываться тоже) и все такое прочее. В основе лежит библиотека InstaPy (более подробно о ней — позже). В пока столкнулся с вопросом, который звучит как: «Как установить библиотеку определенной версии в Python?». Разберемся с этой проблемой!
Иногда бывает так, что установив библиотеку с помощью pip вы сталкиваетесь с проблемой — самая новая версия оказывается — не совсем вам подходит. И нужно установить библиотеку определенной версии. Для этого в командной строке вводим следующее (в качестве примера возьмем ту же самую библиотеку InstaPy, о которой говорил выше. Текущая версия библиотеки на момент написания поста: 0.6.13, а мне нужно установить версию: 0.6.12):
pip install instapy==0.6.12
ВСЕ! Фактически,, мы просто дали команду pip — установить библиотеку — и указали нужную нам версию. Кстати, для правильного удаления библиотеки из системы используйте следующую конструкцию:
pip uninstall instapy
т.е. даем команду pip деинсталировать библиотеку (да, этот метод не так красив как в PyCharm, но не оставляет всяческих хвостов в системе).
Спасибо за внимание! Как всегда — в случае возникновения вопросов пишите на почту или в Telegram!
Как устанавливаются пакеты в Python с PIP и без
Представьте, вы — начальник, и вам нужно собрать отчетность и все документы за год. Вы просите это сделать менеджера, у которого вся документация в доступе — он знает, где искать и как собрать. Так же и в Python: чтобы было удобно работать со всеми библиотеками или пакетами, нужен менеджер пакетов — pip, который вместо вас […]
Подготовлено_выпускником —>

Получите востребованную профессию бесплатно. Обучение от 1 до 4 месяцев
Представьте, вы — начальник, и вам нужно собрать отчетность и все документы за год.
Вы просите это сделать менеджера, у которого вся документация в доступе — он знает, где искать и как собрать. Так же и в Python: чтобы было удобно работать со всеми библиотеками или пакетами, нужен менеджер пакетов — pip, который вместо вас все загрузит. Однако сделать это можно самостоятельно вручную.
Как устанавливать пакеты Python с pip и без, простыми словами объясняем в статье.
Установка PIP для Python 3 и 2
PIP — это стандартный инструмент для управления пакетами в Python. Его рекомендуется использовать для установки и управления пакетами.
Для установки PIP для Python 3 необходимо выполнить следующие шаги:
- Убедитесь, что у вас установлен Python 3.
- Установите пакеты python3-pip и python3-dev для вашей операционной системы. Например, для Ubuntu это можно сделать следующим образом:
sudo apt-get install python3-pip python3-dev
- Проверьте, что PIP установлен правильно:
pip3 —version
- Если все прошло успешно, вы увидите версию PIP для Python 3.
Для установки PIP для Python 2 следует сделать точно такие же шаги, заменяя команды установки пакетов на соответствующие версии пакетов для Python 2. Например, для Linux это будет:
apt-get install python-pip
Затем можно проверить, что PIP установлен успешно для Python 2, выполнив команду:
pip —version
Установка пакета в pip
Пакеты в Python — это директория с обязательным модулем __init__.py. Остальное содержимое опционально и может включать модули или другие пакеты.
Модуль — это файл с частью кода. В разработке код огромный, поэтому его разбивают на смысловые и завершенные части, чтобы было удобнее работать.
Установить пакет можно двумя способами:

- Вручную, скачивая и устанавливая необходимые пакеты.
- С помощью менеджера пакетов pip.
Чтобы установить пакет в PIP, выполните следующие действия:
- Откройте терминал или командную строку в своей операционной системе.
- Введите команду `pip install название_пакета`, где `название_пакета` — это название и версия пакета, который вы хотите установить. Если вы хотите установить последнюю версию пакета, то просто напишите название пакета, без указания его версии.
- Нажмите клавишу Enter. PIP начнет загрузку и установку запрошенного пакета.
- Когда PIP завершит установку пакета, вы увидите сообщение об успешном завершении операции.
Вот несколько примеров команд установки популярных пакетов при помощи PIP:
pip install requests — Установить пакет requests
pip install Flask==1.1.2 — Установить конкретную версию Фреймворка Flask
pip install numpy==1.19.5 — Установить конкретную версию пакета numpy
Важно: выполнение команды `pip install` может потребовать прав администратора. Если вы используете систему Linux, стоит запустить команду от имени суперпользователя с помощью команды `sudo`. Например:
sudo pip install requests
Удаление пакета Python
Если вы хотите удалить установленный пакет Python, вы можете использовать утилиту pip.
Чтобы удалить пакет, выполните следующие шаги в командной строке:
- Откройте терминал или командную строку в операционной системе.
- Введите команду `pip uninstall название_пакета`, где `название_пакета` — это название пакета Python, который вы хотите удалить.
- Нажмите клавишу Enter.
- Подтвердите удаление пакета, запустив команду `yes`.
Несколько примеров команд удаления популярных пакетов:
pip uninstall requests # Удалить пакет requests
pip uninstall Flask # Удалить пакет Фреймворка Flask
pip uninstall numpy # Удалить пакет numpy
Важно : для выполнения команды `pip uninstall` может потребоваться права администратора. Если работаете в системе Linux, то выполните команду от имени суперпользователя, используя команду `sudo`. Например :
sudo pip uninstall requests
Как установить пакеты в Python без pip
Если вы не хотите использовать pip, то установить пакеты на Python можно и без менеджера — pip. Чтобы это сделать следуете шагам, описанным ниже:
- Скачайте и установите пакет, который вы хотите установить. Обычно пакеты Python содержат файлы с расширением .tar.gz или .zip.
- Разархивируйте пакет в любой удобной для вас папке.
- Откройте терминал или командную строку.
- Перейдите в папку, которую вы создали на предыдущем шаге.
- Запустите файл setup.py , который находится в папке пакета, следующей командой:
python setup.py install - После запуска скрипта установки, Python установит пакет, который вы выбрали.
Пример установки пакета pillow (установочный файл можно скачать с сайта https://pypi.org/project/Pillow/ ):
tar -xf Pillow-7.2.0.tar.gz
cd Pillow-7.2.0
python setup.py install
Несмотря на то, что установка пакетов без PIP возможна, это обходное решение. PIP обеспечивает более простой и надежный способ установки и управления пакетами.
Стать квалифицированным разработчиком реально, обучившись на курсах IT от федерального проекта «Содействие занятости» .
Выбирайте, в какой профессии вы хотите стартовать:
- «Тестировщик программного обеспечения: с нуля до первых проектов»
- «Web-программист: с нуля до первых проектов»
- «1С программист»
- «Android-разработчик: создание мобильных приложений»
- «Аналитик данных:с нуля до разработки прикладных решений для бизнеса»
- «Project manager в IT: старт карьеры руководителя ИТ проектов»
Обучение на всех курсах проходит в онлайн-формате на образовательной платформе Odin. Все учебные материалы, лекции и презентации доступны вам в любое время. Обучаться можно по гибкому графику: вечером или на выходных, даже с телефона.
После окончания программы вы получите документ установленного образца и возможность пройти оплачиваемую стажировку в компаниях-партнерах проекта. Сейчас «Содействие занятости» сотрудничает с крупными компаниями: Литрес, МТС, Яндекс, Кинопоиск, ВТБ, банк «Открытие», Теле2 и другими.
Как только закончите обучение, вы получите доступ в закрытый канал с 4500+ вакансиями от проверенных работодателей России. Мы связываемся с работодателями по всей России и ищем для вас актуальные вакансии «с опытом» и «без», чтобы вы могли найти работу мечты после обучения. Каждый день канал добавляется больше 10 свежих вакансий
Чтобы вам было легче и комфортнее найти работу после обучения, чувствовать поддержку и получать помощь и ответы на вопросы, обращайтесь в Центр карьеры . Вы научитесь создавать продающее резюме, оформлять портфолио, писать сопроводительные письма.
Для наших выпускников Центр карьеры проводит консультации, на которых наши HR-специалисты профессионально помогут: понять, на какую зарплату вы можете претендовать, подготовят статистику по вашей позиции), составить план поиска работы, правильно коммуницировать с работодателем на всех этапах работы.
Поделиться:
Бесплатно помогаем найти работу мечты
Лучшая инвестиция — это инвестиция в себя, в свои знания и будущее. Оставьте заявку на бесплатное обучение прямо сейчас и станьте участником проекта.


Получите востребованную профессию бесплатно. Обучение от 1 до 4 месяцев
Установка pip — Python: Настройка окружения
Если вы устанавливали Python на macOS или Windows по нашим рекомендациям, то pip будет установлен вместе с интерпретатором. На Ubuntu его нужно поставить отдельно с помощью команды:
sudo apt update sudo apt install python3-pip
Запуск pip
Можно запускать pip непосредственно командой pip . Но лучше воспользоваться более длинной командой, которая гарантированно вызовет самую свежую установленную версию pip для нужной версии Python.
Итак, вызываем pip:
-m pip --version pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
При показе своей версии pip также сообщает, куда установлен он сам и на какой версии Python он запущен.
Обратите внимание на структуру команды, которую мы вызывали. Эта команда означает « python3 , запусти модуль -m с именем pip как программу с параметром —version ».
Если вы в дальнейшем увидите в документации к pip команды, вроде pip help , то смело вызывайте python3 -m pip help — результат будет тот же самый.
Установка первого пакета
Попробуем установить первый пакет. Для примера возьмем пакет cowsay , который мы установим сразу в пользовательское окружение.
Причин для установки туда есть несколько:
- Мы не помешаем своими пакетами другим пользователям системы
- Нам не потребуются права администратора
- Мы не поломаем операционную систему случайной установкой более свежего пакета, чем того требует система (особенно это важно в Linux, где многие системные задачи решаются с помощью Python)
Итак, установим cowsay:
Пакет установился и стал доступен интерпретатору. Теперь мы видим, что он делает — печатает корову, которая говорит заданную пользователем фразу.
Флаг —user команды pip install сообщает pip, что мы хотим установить пакет в глобальное окружение текущего пользователя. Если этот флаг не указать, то pip установит пакет в общесистемное окружение. Старайтесь не делать так, чтобы не мешать другим пользователям системы.
Программа pip, точки входа и PATH
Как мы увидели выше, установленный пакет cowsay может быть использован из кода. Но этот пакет имеет еще и точку входа.
Точки входа — это готовые к исполнению программы, содержащиеся в пакете. Если у пакета есть точки входа, то pip создаст для каждой специальный исполняемый скрипт, который позволит удобно запускать программу из командной оболочки.
При этом нужно обращать внимание на путь до директории, в которую pip помещает такие скрипты — например, на Linux это ~/.local/bin . Этот путь нужно добавить в PATH . Проверьте содержимое PATH , и если путь прописан правильно, то скрипт для cowsay должен работать так:
Точка входа — это всегда Python-модуль, пригодный для запуска в роли программы. Такие программы называют еще исполняемыми файлами — позже мы рассмотрим, как такие делать. Создаваемые pip’ом скрипты вызывают python3 -m имя_модуля , поэтому установленный нами cowsay можно запускать точно так же:
Всегда свежий pip
Как вы могли уже догадаться, сам pip — это тоже точка входа одноименного пакета pip, поэтому мы его запускаем командой python3 -m pip .
Еще pip нужно периодически обновлять. Вы можете установить свежий pip в пользовательское окружение с помощью такой команды:
-m pip install --user --upgrade pip
Открыть доступ
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
- 130 курсов, 2000+ часов теории
- 1000 практических заданий в браузере
- 360 000 студентов
Наши выпускники работают в компаниях:
Установка Python
Для начала рассмотрим установку модулей для Python. Как правило, модуль можно установить пакетным менеджером pip.
Обратите внимание!
pip (Package Installer for Python) – система управления пакетами (библиотеками), которая используется для установки и управления программными пакетами, написанными на Python.
Для этого необходимо перейти в окружение Docker, подробнее с работой в нем можно ознакомиться в этой статье. В качестве примера установим библиотеку Pillow:
(docker) pythontest@plasma:~ [0] $ pip3 install pillow --user --ignore-installed Collecting pillow Downloading https://files.pythonhosted.org/packages/ba/90/8a24e6220cfcf6a3a0162535d5b926e774117e384ff921908e07e4c92bda/Pillow-7.1.1-cp36-cp36m-manylinux1_x86_64.whl 100% |==========================================>| 2.0MB 532kB/s Installing collected packages: pillow Successfully installed pillow-7.1.1
Обратите внимание!
При установке модулей использование флага —user является обязательным.
Дожидаемся окончания операции. Готово, модуль установлен в каталог:
~/.local/lib/python3.6/site-packages/PIL (docker) pythontest@plasma:~ [0] $ pip3 show pillow Name: Pillow Version: 7.1.1 Summary: Python Imaging Library (Fork) Home-page: https://python-pillow.org Author: Alex Clark (PIL Fork Author) Author-email: aclark@python-pillow.org License: HPND Location: /home/p/pythontest/.local/lib/python3.6/site-package
Чтобы ваш сайт увидел модуль, необходимо добавить в переменную окружения путь до него:
import os, sys sys.path.append('/home/u/user/.local/lib/python3.6/site-packages/PIL')
import os, sys sys.path.insert(0,'/home/u/user/.local/lib/python3.6/site-packages/PIL')
Вместо /u/user необходимо указать первую букву вашего логина и сам логин. Например, для логина pythontest путь будет: /home/p/pythontest/.local/lib/python3.6/site-packages/PIL.
Если требуется установить дополнительные пакеты определенных версий, необходимо указать их в файле requirements.txt. Это удобно тем, что из одного файла можно установить большой список пакетов для Python.
В качестве примера из файла requirements.txt установим следующие пакеты:
(docker) pythontest@plasma:~ [0] $ cat requirements.txt pytsite==8.16.3 pygal==2.4.0 Pillow==6.0.0 django-mobile==0.7.0 django-silver==0.9
Затем запустим команду для установки всех модулей и их зависимостей из данного файла следующей командой:
(docker) pythontest@plasma:~ [0] $ pip3 install -r requirements.txt --user --ignore-installed Collecting PytSite (from -r requirements.txt (line 1)) Downloading https://files.pythonhosted.org/packages/6c/85/c8153ba88d72de4b409880c4afa1ae3ff1fe0e8f17e55588ffe094b5899b/pytsite-8.16.3-py3-none-any.whl (118kB) 100% |==========================================>| 122kB 2.0MB/s Collecting pygal (from -r requirements.txt (line 2)) Using cached https://files.pythonhosted.org/packages/5f/b7/201c9254ac0d2b8ffa3bb2d528d23a4130876d9ba90bc28e99633f323f17/pygal-2.4.0-py2.py3-none-any.whl Collecting django-silver (from -r requirements.txt (line 3)) Using cached https://files.pythonhosted.org/packages/54/43/e0b0012da69ecdb1ea03d1d8f1ea046459bd31353e9c780a4554bd4068bc/django-silver-0.9.tar.gz
Использование нескольких версий Python
Для некоторых web-приложений могут потребоваться разные версии Python. На большинстве серверов в Docker-контейнере установлено несколько вариантов:
/usr/bin/python2.7 /usr/bin/python3.6 /usr/bin/python3.7
Например, чтобы установить пакет для определенной версии Python, выполните команду:
pythonX.X -m pip install название_пакета --user --ignore-installed
где X.X – нужная версия Python. Чтобы установить Pillow для python 3.7, команда будет выглядеть так:
(docker) pythontest@plasma:~ [0] $ python3.7 -m pip install pillow --user --ignore-installed
Локальная установка Python
Для некоторых web-приложений может потребоваться версия Python, отличная от тех, что предоставляются на хостинге. В таком случае необходимую версию можно собрать локально.
Для этого вам потребуется подключиться к серверу по SSH.
Обратите внимание!
Инструкция для подключения по SSH описана в статье Общие сведения по установке приложений (виртуальное окружение Docker).
- Подключитесь по SSH к серверу:
local@host:~$ ssh django17@django17.beget.tech
- Затем подключитесь к Docker-контейнеру:
django17@quasar:~ [0] $ ssh localhost -p222
- Теперь перейдите во временный каталог на аккаунте:
(docker) django17@quasar:~ [0] $ cd ~/.beget/tmp/
Обратите внимание!
Если каталог не создан, ответ будет следующим:
-bash: cd: /home/i/idkfa/.beget/tmp: No such file or directory
Создать временный каталог и перейти в него можно следующей командой:
mkdir -p ~/.beget/tmp && cd ~/.beget/tmp/
Если вам необходим Python версии 3.10 и выше, то необходимо дополнительно установить более свежую версию openssl.
Если вам необходим python версии ниже чем 3.10, то пропустите этот раздел и переходите к сборке непосредственно Python.
- Скачайте архив openssl версии 1.1.1l:
(docker) django17@quasar:~/.beget/tmp [0] $ wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz
- Распакуйте архив и перейдите в папку с файлами:
(docker) django17@quasar:~/.beget/tmp [0] $ tar -xvzf openssl-1.1.1l.tar.gz && cd openssl-1.1.1l
- С помощью утилиты configure настройте необходимые зависимости, префиксы и переменные, после чего будет сгенерирован Makefile:
(docker) django17@quasar:~/.beget/tmp/openssl-1.1.1l [0] $ ./config --prefix=$HOME/.local --openssldir=$HOME/.local/ssl '-Wl,--enable-new-dtags,-rpath,$(LIBRPATH)'
- Запустите процесс компиляции и установки:
(docker) django17@quasar:~/.beget/tmp/openssl-1.1.1l [0] $ make -j$((`nproc`/4)) && make install
Проверить что openssl установлен корректно можно командой:
(docker) django17@quasar:~/.beget/tmp/openssl-1.1.1l [0] $ ~/.local/bin/openssl version
Если в ответ вы получили следующий вывод, то openssl установлен корректно:
OpenSSL 1.1.1l 24 Aug 2021
Перейдем к сборке самого Python.
На момент написания статьи последняя версия Python – 3.11.0, скачать дистрибутив с актуальной версией можно с официального сайта.
Обратите внимание!
В качестве примера установки используется версия Python 3.11.0.
Если вы устанавливаете другую версию, то цифры в названиях папок и архивов будут отличаться.
- Перейдите во временный каталог:
(docker) django17@quasar:~ [0] $ cd ~/.beget/tmp
- Скачайте архив необходимой версии Python:
(docker) django17@quasar:~/.beget/tmp [0] $ wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz
- Распакуйте архив и сразу перейдите в каталог с исходным кодом:
(docker) django17@quasar:~/.beget/tmp [0] $ tar -xvzf Python-3.11.0.tgz && cd Python-3.11.0
- С помощью утилиты configure настройте необходимые зависимости, префиксы, переменные, после чего будет сгенерирован Makefile. Обратите внимание, что для Python меньше 3.10 команда будет отличаться.
Для Python 3.10 и выше:
(docker) django17@quasar:~/.beget/tmp/Python-3.11.0 [0] $ ./configure --prefix=$HOME/.local --with-openssl=$HOME/.local --with-openssl-rpath=auto --enable-optimizations --enable-loadable-sqlite-extensions LDFLAGS="-Wl,-rpath /usr/local/lib"
Для Python 3.9.x и ниже:
(docker) django17@quasar:~/.beget/tmp/Python-3.9.0 [0] $ ./configure --prefix=$HOME/.local --enable-optimizations --enable-loadable-sqlite-extensions LDFLAGS="-Wl,-rpath /usr/local/lib"
- Теперь запустите процесс компиляции и установки:
(docker) django17@quasar:~/.beget/tmp/Python-3.11.0 [0] $ make -j$((`nproc`/4)) && make install
Проверить корректность установки можно следующей командой:
(docker) django17@quasar:~ [0] $ python3 -V Python 3.11.0
Помимо Python, также устанавливается пакетный менеджер pip:
(docker) django17@quasar:~ [0] $ pip3 -V pip 22.3 from /home/d/django17/.local/lib/python3.11/site-packages/pip (python 3.11)
Теперь вы можете использовать собранный Python в работе.
Если возникнут вопросы – напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел «Помощь и поддержка».
Настройка окружения virtualenv
Если сайтов, использующих Python, на аккаунте несколько, то для каждого может потребоваться свое окружение и свой набор пакетов разных версий, которые могут конфликтовать между собой. Эту проблему можно решить настройкой виртуального окружения с помощью virtualenv.
Virtualenv уже есть на хостинге на версиях 2.7, 3.6, 3.7.
Если у вас собранный локально Python, для установки virtualenv укажите полный путь до pip:
(docker) django17@quasar:~/django17.beget.tech [0] $ ~/.local/bin/pip3.8 install virtualenv
Вызвать справку можно так:
(docker) django17@quasar:~/django17.beget.tech [0] $ python -m virtualenv --help (docker) django17@quasar:~/django17.beget.tech [0] $ ~/.local/bin/python3.8 -m virtualenv --help
Дальше следует создать директорию окружения.
Обратите внимание!
Лучше присвоить название директории с отсылкой к проекту, для которого она будет использоваться. Это нужно для того, чтобы в дальнейшем не путаться.
Команды будут отличаться в зависимости от версии Python.
Чтобы создать директорию окружения с названием venv_django, используя Python 2.7, выполните команду:
(docker) django17@quasar:~/django17.beget.tech [0] $ python -m virtualenv venv_django
Для создания директории окружения с названием venv_django, используя Python 3.6, выполните команду:
(docker) django17@quasar:~/django17.beget.tech [0] $ python -m virtualenv venv_django --python=/usr/bin/python3.6
Для локально собранного Python команда выглядит так:
(docker) django17@quasar:~/django17.beget.tech [0] $ ~/.local/bin/python3.8 -m virtualenv venv_django
Для входа в окружение выполните следующую команду:
(docker) django17@quasar:~/django17.beget.tech [0] $ source venv_django/bin/activate
Проверяем, что вход выполнен успешно:
(docker) django17@quasar:~/django17.beget.tech [0] $ which python /home/d/django17/django17.beget.tech/venv/bin/python
Теперь мы можем устанавливать все необходимые пакеты для данного окружения с помощью pip (при этом полный путь до него указывать уже не нужно):
(docker) django17@quasar:~/django17.beget.tech [0] $ pip install django
Чтобы выйти из окружения, выполните команду:
(docker) django17@quasar:~/django17.beget.tech [0] $ deactivate
Установка и настройка Django
Django (Джанго) — свободный фреймворк для веб-приложений на языке Python. Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми. Это одно из существенных архитектурных отличий этого фреймворка от некоторых других (например, Ruby on Rails). В этой статье будет рассмотрена установка этого фреймворка на хостинг Beget. Для установки Django будет использоваться Python 3.6. При необходимости можете использовать другую версию Python, установив ее локально, как описано выше.
Сначала необходимо перейти в виртуальное окружение сервера (Docker), подробнее о том, как это сделать, можно ознакомиться по ссылке Общие сведения по установке приложений (виртуальное окружение Docker):
Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 4.0.4-3-beget-acl x86_64) * Documentation: https://help.ubuntu.com/ (docker) django17@quasar:~ [0] $
Для установки фреймворка Django используется пакетный менеджер pip, который автоматически устанавливает последнюю версию:
(docker) django17@quasar:~/django17.beget.tech [0] $ pip3 install django --user --ignore-installed Collecting django Downloading https://files.pythonhosted.org/packages/a9/4f/8a247eee2958529a6a805d38fbacd9764fd566462fa0016aa2a2947ab2a6/Django-3.0.5-py3-none-any.whl (7.5MB) 100% |████████████████████████████████| 7.5MB 175kB/s Collecting pytz (from django) Downloading https://files.pythonhosted.org/packages/e7/f9/f0b53f88060247251bf481fa6ea62cd0d25bf1b11a87888e53ce5b7c8ad2/pytz-2019.3-py2.py3-none-any.whl (509kB) 100% |████████████████████████████████| 512kB 2.5MB/s Collecting asgiref~=3.2 (from django) Downloading https://files.pythonhosted.org/packages/68/00/25013f7310a56d17e1ab6fd885d5c1f216b7123b550d295c93f8e29d372a/asgiref-3.2.7-py2.py3-none-any.whl Collecting sqlparse>=0.2.2 (from django) Downloading https://files.pythonhosted.org/packages/85/ee/6e821932f413a5c4b76be9c5936e313e4fc626b33f16e027866e1d60f588/sqlparse-0.3.1-py2.py3-none-any.whl (40kB) 100% |████████████████████████████████| 40kB 8.7MB/s Installing collected packages: pytz, asgiref, sqlparse, django Successfully installed asgiref-3.2.7 django-3.0.5 pytz-2019.3 sqlparse-0.3.1
Затем необходимо создать новый проект:
(docker) django17@quasar:~/django17.beget.tech [0] $ django-admin.py startproject HelloDjango
И создать файл passenger_wsgi.py со следующим содержимым:
# -*- coding: utf-8 -*- import os, sys sys.path.insert(0, '') sys.path.insert(1, '') os.environ['DJANGO_SETTINGS_MODULE'] = '.settings' from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
Посмотреть версию и путь до Django можно так:
(docker) django17@quasar:~/django17.beget.tech [0] $ python3.6 -c "import django; print(django.get_version()); print(django.__file__)" 3.0.5 /home/o/django17/.local/lib/python3.6/site-packages/django/__init__.py
В рассматриваемом примере passenger_wsgi.py следующий:
# -*- coding: utf-8 -*- import os, sys sys.path.insert(0, '/home/d/django17/django17.beget.tech/HelloDjango') sys.path.insert(1, '/home/d/django17/.local/lib/python3.6/site-packages') os.environ['DJANGO_SETTINGS_MODULE'] = 'HelloDjango.settings' from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
Если мы используем virtualenv, то содержимое должно быть следующим:
# -*- coding: utf-8 -*- import os, sys sys.path.insert(0, '/home/d/django17/django17.beget.tech/HelloDjango') sys.path.insert(1, '/home/d/django17/django17.beget.tech/venv_django/lib/python3.6/site-packages') os.environ['DJANGO_SETTINGS_MODULE'] = 'HelloDjango.settings' from django.core.wsgi import get_wsgi_application application = get_wsgi_application()
Для Django версии 1.4 – 1.6 отличается синтаксис последних двух строк.
В этом случае файл passenger_wsgi.py будет выглядеть следующим образом:
# -*- coding: utf-8 -*- import os, sys sys.path.append('/home/d/django17/django17.beget.tech/HelloDjango') sys.path.append('/home/d/django17/.local/lib/python2.7/site-packages') os.environ['DJANGO_SETTINGS_MODULE'] = 'HelloDjango.settings' import django.core.handlers.wsgi application = django.core.handlers.wsgi.WSGIHandler()
Для последних версий Django также требуется явно задать домен, на котором работает сайт. Для этого нужно отредактировать список ALLOWED_HOSTS в файле //settings.py. Вместо указания определенного домена можно использовать символ подстановки *, тогда проект будет работать на любом домене.
В нашем примере он будет выглядеть так:
ALLOWED_HOSTS = ['django17.beget.tech']
Для корректной отдачи статического контента средствами Nginx необходимо создать символьную ссылку public, указывающую на public_html:
(docker) django17@quasar:~/django17.beget.tech [0] $ ln -s public_html public
Затем нужно создать файл .htaccess и указать в нем путь до Python:
PassengerEnabled On PassengerPython /usr/bin/python3.6
Если используется virtualenv, то содержимое будет следующим:
PassengerEnabled On PassengerPython /home/d/django17/django17.beget.tech/venv/bin/python3.8
При использовании локально собранного Python содержимое может быть и таким:
PassengerEnabled On PassengerPython /home/d/django17/.local/bin/python3.8
Обратите внимание!
Путь может отличаться в зависимости от используемой версии Python.
После завершения настройки окружения необходимо создать каталог tmp, где будет храниться файл restart.txt:
(docker) django17@quasar:~/django17.beget.tech [0] $ mkdir tmp; touch tmp/restart.txt
В целях безопасности на сервере установлена система разграничения прав доступа между сайтами, основанная на POSIX ACL. Сделано это для того, чтобы файлы одного сайта не могли обращаться к файлам других сайтов. Приложения, которые будут устанавливаться в каталоги .local, по умолчанию недоступны при попытке их запуска через сайт. Необходимо настроить общий доступ к этим каталогам через Файловый менеджер (подробная справка по разделу).
Для проверки работоспособности нужно открыть сайт в браузере:

Установка микрофреймворка Flask
Сначала необходимо перейти в виртуальное окружение сервера (Docker), подробнее о том, как это сделать, можно ознакомиться по ссылке Общие сведения по установке приложений (виртуальное окружение Docker):
Welcome to Ubuntu 12.04.5 LTS (GNU/Linux 4.1.5-3-beget-acl x86_64) * Documentation: https://help.ubuntu.com/ (docker) deniatest@robin:~ [0] $
В рассматриваемом примере каталог сайта – flask, нужно перейти в этот каталог:
(docker) deniatest@robin:~/.beget/tmp/Python-3.4.3 [0] $ cd ~/flask/
Установка Flask происходит через пакетный менеджер pip:
(docker) deniatest@robin:~/flask [1] $ pip3 install flask --user --ignore-installed Collecting flask Downloading https://files.pythonhosted.org/packages/9a/74/670ae9737d14114753b8c8fdf2e8bd212a05d3b361ab15b44937dfd40985/Flask-1.0.3-py2.py3-none-any.whl (92kB) 100% |====================>| 92kB 2.3MB/s Collecting Werkzeug>=0.14 (from flask) Using cached https://files.pythonhosted.org/packages/9f/57/92a497e38161ce40606c27a86759c6b92dd34fcdb33f64171ec559257c02/Werkzeug-0.15.4-py2.py3-none-any.whl Collecting click>=5.1 (from flask) Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB) 100% |====================>| 81kB 8.4MB/s Collecting Jinja2>=2.10 (from flask) Using cached https://files.pythonhosted.org/packages/1d/e7/fd8b501e7a6dfe492a433deb7b9d833d39ca74916fa8bc63dd1a4947a671/Jinja2-2.10.1-py2.py3-none-any.whl Collecting itsdangerous>=0.24 (from flask) Downloading https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl Collecting MarkupSafe>=0.23 (from Jinja2>=2.10->flask) Using cached https://files.pythonhosted.org/packages/b2/5f/23e0023be6bb885d00ffbefad2942bc51a620328ee910f64abe5a8d18dd1/MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl Installing collected packages: Werkzeug, click, MarkupSafe, Jinja2, itsdangerous, flask Successfully installed Jinja2-2.10.1 MarkupSafe-1.1.1 Werkzeug-0.15.4 click-7.0 flask-1.0.3 itsdangerous-1.1.0
Необходимо создать каталог с новым проектом HelloFlask и временный каталог tmp:
(docker) deniatest@robin:~/flask [0] $ mkdir HelloFlask tmp
Для корректной отдачи статического контента средствами Nginx создается симлинк на public_html:
deniatest@robin:~/flask [0] $ ln -s public_html public
После чего нужно создать файл .htaccess со следующим содержимым:
PassengerEnabled On PassengerPython /usr/bin/python3
где во второй директиве PassengerPython указывается путь до интерпретатора Python. Если используется virtualenv или локально собранный Python, то /usr/bin/python3 необходимо заменить на соответствующий путь.
Далее нужно создать файл passenger_wsgi.py со следующим содержимым:
# -*- coding: utf-8 -*- import sys, os sys.path.append('/home/d/deniatest/flask/HelloFlask/') # указываем директорию с проектом sys.path.append('/home/d/deniatest/.local/lib/python3.6/site-packages') # указываем директорию с библиотеками, куда поставили Flask from HelloFlask import app as application # когда Flask стартует, он ищет application. Если не указать 'as application', сайт не заработает from werkzeug.debug import DebuggedApplication # Опционально: подключение модуля отладки application.wsgi_app = DebuggedApplication(application.wsgi_app, True) # Опционально: включение модуля отадки application.debug = False # Опционально: True/False устанавливается по необходимости в отладке
В каталоге проекта HelloFlask необходимо создать файл __init__.py со следующим содержимым:
from flask import Flask app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello Flask!' if __name__ == '__main__': app.run()
После чего в корневом каталоге сайта ~/flask необходимо выполнить следующую команду:
deniatest@robin:~/flask [0] $ touch tmp/restart.txt
При проверке работы сайта в браузере должно получиться:

Первоначальная установка микрофреймворка Bottle
Сначала необходимо перейти в виртуальное окружение сервера (Docker), подробнее можно ознакомиться по ссылке Общие сведения по установке приложений (виртуальное окружение Docker).
После чего перейти в каталог сайта:
(docker) deniatest@robin:~ [0] $ cd bottle/
Bottle устанавливается через пакетный менеджер pip.
Обратите внимание!
Обращаем ваше внимание, что в данной статье используется Python 3.6. При необходимости можете установить на другую версию, соответственно, поправив все пути и директивы:
(docker) deniatest@robin:~/bottle [0] $ pip3 install bottle --user --ignore-installed Collecting bottle Downloading https://files.pythonhosted.org/packages/69/d1/efdd0a5584169cdf791d726264089ce5d96846a8978c44ac6e13ae234327/bottle-0.12.17-py3-none-any.whl (89kB) 100% |====================>| 92kB 1.7MB/s Installing collected packages: bottle Successfully installed bottle-0.12.17
Затем нужно создать каталог с новым проектом HelloBottle и временный каталог tmp:
(docker) deniatest@robin:~/bottle [0] $ mkdir HelloBottle tmp
Для корректной отдачи статического контента средствами Nginx создается симлинк на public_html:
(docker) deniatest@robin:~/bottle [0] $ ln -s public_html public
Далее нужно создать файл .htaccess, общий вид которого:
PassengerEnabled On PassengerPython /usr/bin/python3.6 SetEnv PYTHONPATH /home/первая_буква_логина_аккаунта/логин_аккаунта/.local/lib/python3.6/site-package
Вторая директива PassengerPython указывает путь до интерпретатора Python, третья директива SetEnv – путь к установленным модулям. Поскольку по умолчанию модули устанавливаются в каталог /usr/lib/python3.6 и /usr/local/lib/python3.6, необходимо переопределить этот параметр.
В рассматриваемом примере .htaccess получился следующим:
PassengerEnabled On PassengerPython /usr/bin/python SetEnv PYTHONPATH /home/d/deniatest/.local/lib/python3.6/site-packages
Общий вид файла passenger_wsgi.py:
# -*- coding: utf-8 -*- import sys import bottle import os # add your project directory to the sys.path project_home = u'/home/первая_буква_логина_аккаунта/логин_аккаунта/сайт/название_проекта/' if project_home not in sys.path: sys.path = [project_home] + sys.path # make sure the default templates directory is known to Bottle templates_dir = os.path.join(project_home, 'views/') if templates_dir not in bottle.TEMPLATE_PATH: bottle.TEMPLATE_PATH.insert(0, templates_dir) # import bottle application from app import application
В рассматриваемом примере passenger_wsgi.py получился следующим:
# -*- coding: utf-8 -*- import sys import bottle import os # add your project directory to the sys.path project_home = u'/home/d/deniatest/bottle/HelloBottle/' if project_home not in sys.path: sys.path = [project_home] + sys.path # make sure the default templates directory is known to Bottle templates_dir = os.path.join(project_home, 'views/') if templates_dir not in bottle.TEMPLATE_PATH: bottle.TEMPLATE_PATH.insert(0, templates_dir) # import bottle application from app import application
Затем необходимо создать файл app.py в каталоге проекта HelloBottle:
# -*- coding: utf-8 -*- from bottle import default_app, route, run, debug @route('/') def default(): return u'Hello Bottle!' @route('/no') def hello_world(): return u'Hello ОТ - no -- Bottle!' @route('/c') def hello_world(): return u'c Hello ОТ - -- Bottle!' #debug(True) application = default_app()
Для того чтобы Passenger переприменил конфиг, необходимо создать файл tmp/restart.txt:
deniatest@robin:~/bottle [0] $ touch tmp/restart.txt
Для проверки работоспособности нужно открыть сайт в браузере:

Установка web2py
Web2py — фреймворк с открытым исходным кодом для разработки веб-приложений, написанный на языке программирования Python. Web2py призван сократить рутинные процессы веб-разработки, такие как написание веб-форм с нуля, хотя разработчик может сам разработать ее с нуля, если в этом возникнет необходимость.
В этой статье будет рассмотрена установка этого фреймворка на хостинг Beget. В качестве версии Python мы будем использовать установленную глобально 3.6.
Первое, что нужно сделать — подключиться в виртуальное окружение сервера (Docker) через протокол SSH. Подробнее о подключении описывается в статье Общие сведения по установке приложений (виртуальное окружение Docker).
Теперь мы в виртуальном окружении переместимся в директорию сайта, заранее созданного в разделе Сайты, в нашем случае — это web2py:
(docker) denia059@plasma:~ [0] $ cd web2py/ (docker) denia059@plasma:~/web2py [0] $
После склонируем сам фреймворк:
(docker) denia059@plasma:~/web2py [0] $ git clone https://github.com/web2py/web2py.git Cloning into 'web2py'… remote: Enumerating objects: 69, done. remote: Counting objects: 100% (69/69), done. remote: Compressing objects: 100% (47/47), done. remote: Total 41336 (delta 25), reused 46 (delta 22), pack-reused 41267 Receiving objects: 100% (41336/41336), 40.51 MiB | 22.75 MiB/s, done. Resolving deltas: 100% (26182/26182), done.
Переместим все файлы в текущую директорию командой:
(docker) denia059@plasma:~/web2py [0] $ mv web2py/* . (docker) denia059@plasma:~/web2py [0] $
Скопируем в текущую директорию файл handlers/wsgihandler.py:
(docker) denia059@plasma:~/web2py [0] $ cp handlers/wsgihandler.py . (docker) denia059@plasma:~/web2py [0] $
Сделаем симлинк passenger_wsgi.py на файл wsgihandler.py:
(docker) denia059@plasma:~/web2py [0] $ ln -s wsgihandler.py passenger_wsgi.py (docker) denia059@plasma:~/web2py [0] $
Добавим несколько директив в файл .htaccess:
PassengerEnabled On PassengerPython /usr/bin/python3.6 SetEnv PYTHONPATH $HOME/.local/lib/python3.6/site-packages
Для работы web2py нужно поставить библиотеки pyDAL и yatl:
(docker) denia059@plasma:~/web2py [0] $ pip3 install pyDAL yatl --user --ignore-installed Collecting pyDAL Downloading https://files.pythonhosted.org/packages/65/1e/ad330385bf45ee280cd2d33ed086e11224658863ab851f9d1a8421656424/pydal-19.5.11.tar.gz (390kB) 100% |====================>| 399kB 2.6MB/s Building wheels for collected packages: pyDAL Running setup.py bdist_wheel for pyDAL . done Stored in directory: /home/r/r91115vb/.cache/pip/wheels/7e/1f/ba/e04f60cf1a3dff4ba20c856a197edaebab63af014af8f91901 Successfully built pyDAL Installing collected packages: pyDAL Successfully installed pyDAL-19.5.11 Collecting yatl Downloading https://files.pythonhosted.org/packages/a7/a2/d4b38d0b550117b4af7f814542fcbd9a2fac26be100e6a57bb5c0998ed3a/yatl-1.0.7.tar.gz Building wheels for collected packages: yatl Running setup.py bdist_wheel for yatl . done Stored in directory: /home/r/r91115vb/.cache/pip/wheels/cc/c4/42/64347cd144fcbc1163f50a9f7a0abda9ebc9089f7b950b9741 Successfully built yatl Installing collected packages: yatl Successfully installed yatl-1.0.7
Для корректной отдачи статического контента средствами Nginx создается симлинк на public_html:
(docker) denia059@plasma:~/web2py [0] $ ln -s public public_html (docker) denia059@plasma:~/web2py [0] $
Для того чтобы Passenger переприменил конфиг, необходимо создать файл tmp/restart.txt:
(docker) denia059@plasma:~/web2py [0] $ mkdir tmp; touch tmp/restart.txt (docker) denia059@plasma:~/web2py [0] $
Теперь проверим в браузере. Вводим URL нашего сайта и видим стандартную страницу с установленным фреймворком:

Ссылка на административную панель фреймворка – http://site.ru/admin, в рассматриваемом примере – http://denia059.beget.tech/admin.
В документации web2py указано, что доступ к административной панели заблокирован. Чтобы разблокировать доступ, необходимо выполнить следующую команду:
denia059@plasma:~/web2py [0] $ python3.6 -c "from gluon.main import save_password; save_password(input('admin password: '),80)"
После чего ввести пароль:
admin password: qwerty
Проверка работоспособности сайта средствами браузера:

При необходимости сменить пароль для доступа к административной панели можно, нажав на кнопку «Изменить пароль администратора» в правой части:

Удачной работы! Если возникнут вопросы — напишите нам, пожалуйста, тикет из Панели управления аккаунта, раздел «Помощь и поддержка».