Подготовка рабочего места в Windows и Linux. Virtual Environment (venv). Ответы на вопросы
Весь текст ниже появился как попытка дать универсальный ответ на те вопросы, которые дорогие читатели присылали и продолжают присылать раз за разом. Здесь не будет кода, связанного с ботами напрямую, а лишь советы по организации процесса написания. И, конечно же, не нужно воспринимать это как истину в последней инстанции, напротив, выбирайте те инструменты и подходы к разработке, которые лично вам кажутся удобными. Важная деталь: текст написан в конце 2019 года. Достаточно вступительных слов, поехали!
Предположим, вы уже немного знаете язык Python 3 (забудьте про Python 2.7, он мёртв), умеете писать простенькие программы и хотите взяться за разработку ботов. Где это делать? В чём писать код? Как правило, у большинства начинающих программистов основной операционкой используется Microsoft Windows. С неё и начнём, но сперва…
Virtual environment
Вы когда-нибудь пользовались VirtualBox? Например, чтобы «пощупать» другие операционные системы или просто установить какой-нибудь подозрительный софт. Python Virtual environment (далее — venv) чем-то напоминает «виртуалку». При его использовании создаётся копия выбранного интерпретатора Питон, а все устанавливаемые модули хранятся изолированно от общесистемных, тем самым, упрощается их обновление, удаление или изменение. Часто venv позволяет избежать ошибок, связанных с обратной совместимостью некоторых библиотек, а также обойтись без конфликтов с системными модулями. Работа с venv будет подробнее описана ниже в разделе Linux, но использовать его мы будем везде.
Windows
Первым делом, разумеется, нужно скачать сам интерпретатор Python. На момент написания этого текста актуальной версией является Python 3.8.1. В качестве каталога установки я рекомендую использовать что-то простое, вроде C:\Python38. Где писать код — личное дело каждого, конечно, но я всё же рекомендую использовать специальную среду разработки под названием PyCharm Community Edition. Бесплатной версии (та самая Community) более чем достаточно. После установки и первичной настройки выберите пункт File -> New Project. Укажите имя вашего первого проекта, а ниже укажите «New environment using virtualenv», ниже в качестве интерпретатора путь к python.exe каталога с Питоном (например, C:\Python38\python.exe).
Создание нового проекта в PyCharm
После запуска откройте вкладку Terminal в левом нижнем углу и установите библиотеку pytelegrambotapi (не telebot!). Для любителей тыкать мышкой есть более запутанный вариант: File -> Settings -> Project -> Project Interpreter -> кнопка «+» в правой части экрана.
Установка библиотеки через терминал в PyCharm
Прекрасно, теперь начинайте творить! Создайте первый файл с исходником, нажав правой кнопкой мышки по имени проекта в списке файлов, затем New и Python File.
Создание нового файла кода в PyCharm
Запустить код можно, выбрав сверху пункт Run, затем снова Run…, но с многоточием, и затем выбрав созданный ранее файл.
Как залить файлы на сервер?
Для копирования файлов на удалённый сервер (обычно там стоит Linux), я использую замечательную бесплатную программу WinSCP, причём в ней присутствует режим автоматической синхронизации файлов, чтобы при любом изменении в локальном каталоге обновлялось содержимое на удалённой машине, избавляя вас от необходимости копировать всё вручную.
Скриншот программы WinSCP
При помощи WinSCP можно даже просто подключиться к серверу и подправить файл «на лету», не забудьте только потом перезапустить бота!
Linux
Если Linux у вас используется вместо Windows, то работа с PyCharm будет точно такой же, поэтому второй раз писать не имеет смысла. Далее рассмотрен процесс запуска в терминале на удалённом сервере. Прекрасно, вы написали бота и хотите где-то его запустить. Например, арендовали сервер у Scaleway/DigitalOcean/AWS/etc. Запустили сервер, подключились к нему по SSH, а там чёрный экран и терминальная Linux-сессия. Во-первых, давайте посмотрим, какой интерпретатор у нас выбран по умолчанию, введя команду python3 .
Хорошим правилом будет иметь на сервере ровно ту же версию Python, что и на своей локальной машине, во избежание различных неприятностей. Если версия на сервере ниже 3.7 и/или ниже той, что установлена локально, лучше всего будет установить её отдельно. Очень рекомендую вот эту статью, по которой я для себя написал простой скрипт для автоматизации рутинных действий. Итак, интерпретатор установлен, теперь пора создать каталог, куда положим файлы бота. Выполните по очереди следующие команды:
mkdir mybot cd mybot python3.7 -m venv venv source venv/bin/activate pip install pytelegrambotapi deactivate
В результате должно получиться примерно то же самое, что на скриншоте ниже, с той лишь разницей, что я прервал процесс установки библиотеки для читабельности. Обратите внимание, что после подгрузки файла venv/bin/activate, перед названием пользователя и текущего каталога появится приписка (venv), означающая, что мы «вошли» в виртуальное окружение и устанавливаем библиотеки именно в него.
Создание venv в Linux-терминале
Что произошло выше? Во-первых, мы создали каталог с названием mybot и перешли в него. Во-вторых, мы использовали Python версии 3.7 (в вашем случае это может быть не так), чтобы создать виртуальное окружение в подкаталоге venv. В-третьих, мы «активировали» venv и выполнили в нём нужную нам команду. Внутри venv команды pip и python точно знают, к какому именно интерпретатору они относятся, поэтому путаницы вроде «я установил библиотеку для Python 3.5, а запускаю из-под Python 3.7» попросту не будет. Наконец, в-четвёртых, мы деактивировали venv, поскольку он напрямую нам больше не нужен. Чтобы сделать жизнь ещё приятнее, давайте настроим автозагрузку бота, чтобы при возникновении ошибок или при перезапуске сервера он вновь запускался, избавляя нас от необходимости постоянно проверять всё вручную. Для этого мы воспользуемся подсистемой инициализации systemd, которая всё больше распространена в современных Linux-дистрибутивах. Прежде, чем описать службу systemd, откройте главный файл с ботом, в котором прописан его запуск и добавьте в качестве первой строки следующий код: #!venv/bin/python
Сохраните файл, закройте его и выполните команду chmod +x имяфайласботом.py , чтобы сделать его исполняемым. Теперь создайте файл mybot.service, и скопируйте туда следующий текст:
[Unit] Description=MY BOT After=network.target [Service] Type=simple WorkingDirectory=/home/user/mybot ExecStart=/home/user/mybot/bot.py KillMode=process Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
Отредактируйте поля Description , WorkingDirectory и ExecStart , сохраните и закройте файл. Далее скопируйте его в каталог /etc/systemd/system , введя свой пароль при необходимости (если сидите не из-под рута, что правильно, то ваш юзер должен иметь возможность выполнять команды от имени sudo). Затем выполните следующие команды для включения автозагрузки и запуска бота (опять-таки, требуются права суперпользователя):
systemctl enable mybot.service systemctl restart mybot
Наконец, проверьте состояние вашего бота командой systemctl status mybot . Его статус должен быть Active (running) зелёного цвета (если поддерживается разноцветный режим).
Проверка статуса бота через systemd
Как редактировать файлы на сервере?
Если что-то нужно подправить небольшое, то неплохим вариантом остаётся старое доброе подключение по SSH и использование редакторов вроде micro, nano или даже vim с emacs. Но если вдруг у вас в качестве локальной машины применяется Linux, то крайне рекомендую редактор Visual Studio Code (https://code.visualstudio.com) с дополнением Remote-SSH. В этом случае, вы сможете прямо в VS Code открывать каталоги на сервере и редактировать файлы в удобном окружении и с подсветкой синтаксиса. К сожалению, насколько мне известно, расширение Remote-SSH не работает в Windows, но впоследствии этот недочёт будет устранён.
Ответы на часто задаваемые вопросы (FAQ)
Хочу научиться писать ботов. С чего мне начать?
Прежде всего, пожалуйста, изучите хотя бы немного сам язык Python. Он довольно простой, но перед созданием ботов стоит понять азы. Конкретнее: переменные, циклы, функции, классы, обработка исключений, работа с файлами и файловой системой.
Можно ли писать ботов на телефоне?
Да кто ж вам запретит-то? Но лучше от этого никому не будет, поверьте. Будет трудно, неудобно и контрпродуктивно. Используйте нормальный компьютер.
[pyTelegramBotAPI] Ошибка AttributeError: module ‘telebot’ has no attribute ‘TeleBot’!
На 99% уверен, что вы установили библиотеку telebot вместо pytelegrambotapi. С учётом всего вышесказанного проще создать новое окружение venv, перенести туда нужные файлы и установить именно pytelegrambotapi, при этом в исходниках должно остаться import telebot.
Как мне держать бота запущеным в Windows?
Запустите бота в PyCharm, не закрывайте приложение и не выключайте комп. Почти шутка. По-моему, Windows — не самая лучшая операционка для подобных вещей, проще арендовать сервер у европейских провайдеров, заодно не будет геморроя с варварами из Российского Консорциума Неадекватов.
Библиотека pyTelegramBotAPI не поддерживает новые фичи Bot API!
К сожалению, упомянутая библиотека в 2019 году развивалась гораздо медленнее, чем хотелось. Если вы уже чувствуете себя уверенным ботописателем, подумайте о переходе на альтернативы вроде aiogram.
В завершение хочется напомнить, что если у вас возникли замечания, предложения или вопросы, вы всегда можете открыть issue на Github или прийти к нам в чатик.
Установка библиотеки pyTelegramBotAPI
Привет: во время установки в pycharm pyTelegramBotAPI через настройки пишет error. помогите, что не так?
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Установка библиотеки
Здравствуйте. Пытаюсь на линукс сервер от google cloud platform установить библиотеку selenium.
Python и установка pip install pyTelegramBotAPI
C:\Users\User>pip list Package Version ———- ——- pip 20.2.3 setuptools.
Установка библиотеки
Добрый день! Я пытаюсь установить библиотеку tensorflow Пишу в командной строке: pip install.
Установка библиотеки
помогите, в чем проблема?
Установка GD библиотеки
Здравствуйте На системе CentOS (centos-6-x86_64) был установлен php PHP 5.3.3 (cli).
5890 / 3348 / 1034
Регистрация: 03.11.2009
Сообщений: 9,977
Сообщение от baloven
что не так
похоже, что ошибка
709 / 348 / 120
Регистрация: 09.12.2020
Сообщений: 919
baloven, привет: попробуй через pip3
Регистрация: 23.06.2022
Сообщений: 14
Извините за долгий ответ. спасибо. но помогите как через pip3 это сделать? я просто очень начинающая))
заранее спасибо)
я здесь, не пропаду уже.
40 / 42 / 16
Регистрация: 15.01.2021
Сообщений: 432
baloven, pip3 install pyTelegramBotAPI
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Установка библиотеки
Возникла проблема с установкой библиотеки, помогите, пожалуйста. Я вызываю import parser, для этого.
Установка библиотеки
Добрый день. При установке pyautogui, столкнулся с ошибкой unicode. Возможно, кто-то знает, как ее.
Установка GD библиотеки
Здравствуйте На системе CentOS (centos-6-x86_64) был установлен php PHP 5.3.3 (cli).
Установка библиотеки
Скачал с сайта http://www.idiap.ch/~fleuret/software.html библиотеку Simple Window для работы с.
Установка Библиотеки
Здравствуйте. Хочу установить библиотеку для Python в PyCharm. Подскажите, как это сделать? Буду.
Подключение библиотеки Telebot к PyCharm
Вычитал статейку по созданию бота на API телеграма, установил все по jописанной там инструкции и работает все нормально, но мне не импонирует писать в обычном текстовом редакторе. В IDLE выделяются элементы синтаксиса разными цветами, но нет подсказок по введенным первым символам, да работать в нем не удобно, так как приходится несколько файлов в несколько окон открывать.
Установил PyCharm, выглядит вроде неплохо, но при вводе import telebot он посылает меня куда по дальше. Как подключить эту библиотеку к PyCharm?
Добавлено через 5 часов 27 минут
Несмотря на то, что вопрос очень простой, ответа так и не последовало.
перейти в file/settings/project, там выбирается интерпретатор к которому подключены нужные библиотеки.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Отсутствуют функции у telebot в PyCharm
Здравствуйте, установил модуль telebot (естественно через pip install pyTelegramBotAPI), но в.
Постоянная ошибка AttributeError: module ‘telebot’ has no attribute ‘Telebot’. Did you mean: ‘TeleBot’?
Учусь делать бота в телегу Вылезла такая ошибка AttributeError: module ‘telebot’ has no attribute.
Ошибка в установке библиотеки telebot
Подскажите,поэтапно, как с помощью библиотеки pip на языке Python3.6 установить библиотеку.
PyCharm. Не могу установить библиотеки
Добрый день! Только начинаю пользоваться PyCharm’ом, но это просто . Подскажите пожалуйста как.
Устанавливаем python-пакеты с помощью pip
pip — это система управления пакетами, которая используется для установки и управления программными пакетами, написанными на Python.
Установка pip
Прежде чем с помощью pip устанавливать python-пакеты, нужно сначала установить сам pip.
Python 3.4+
Начиная с Python версии 3.4, pip поставляется вместе с интерпретатором python.
Python
- Загрузить get-pip.py (обязательно сохранив с расширением .py).
- Запустить этот файл (могут потребоваться права администратора).
Есть ещё один способ (для Windows). Возможно, он является более предпочтительным:
- Установить setuptools http://www.lfd.uci.edu/~gohlke/pythonlibs/#setuptools
- Установить pip http://www.lfd.uci.edu/~gohlke/pythonlibs/#pip
Начало работы
Попробуем с помощью pip установить какой-нибудь пакет, например, numpy:
sudo pip3 install numpy
pip3 install numpy
Может не сработать, написав: «python» не является внутренней или внешней командой, исполняемой программой или пакетным файлом (такого, скорее всего, не должно быть при установке pip вторым способом, но проверить не на чем).
Тогда нужно обращаться напрямую:
Либо добавлять папку C:\Python34\Tools\Scripts\ в PATH вручную (самому проверить не на чем, можете посмотреть на stackoverflow. У кого получится — напишите в комментарии).
Что ещё умеет делать pip
Пробежимся по основным командам pip:
pip help — помощь по доступным командам.
pip install package_name — установка пакета(ов).
pip uninstall package_name — удаление пакета(ов).
pip list — список установленных пакетов.
pip show package_name — показывает информацию об установленном пакете.
pip search — поиск пакетов по имени.
pip —proxy user:passwd@proxy.server:port — использование с прокси.
pip install -U — обновление пакета(ов).
pip install —force-reinstall — при обновлении, переустановить пакет, даже если он последней версии.
Для вставки кода на Python в комментарий заключайте его в теги
- Модуль csv - чтение и запись CSV файлов
- Создаём сайт на Django, используя хорошие практики. Часть 1: создаём проект
- Онлайн-обучение Python: сравнение популярных программ
- Книги о Python
- GUI (графический интерфейс пользователя)
- Курсы Python
- Модули
- Новости мира Python
- NumPy
- Обработка данных
- Основы программирования
- Примеры программ
- Типы данных в Python
- Видео
- Python для Web
- Работа для Python-программистов
- Сделай свой вклад в развитие сайта!
- Самоучитель Python
- Карта сайта
- Отзывы на книги по Python
- Реклама на сайте