Установка Python + Selenium + Eclipse/SublimeText3 в Debian

= 1 =
Установить Python

Вероятно, Python уже установлен в системе, и что ещё более вероятно, сразу несколько версий, и новая третья, и старая вторая, которая ещё нужна для каких-то приложений. Проверяем в консоли.

python --version

Ожидаемый результат: Python 2.7.13

python3 --version

Ожидаемый результат: Python 3.5.3 (или новее)

Если нет, тогда ставим третью версию из общего репозитория: пакет ’python3-defaults’ https://packages.debian.org/ru/source/bullseye/python3-defaults

sudo apt install python3
python3 --version

= 2 =
Установить ’pip’, пакетный менеджер Python

sudo apt-get install -y python3-pip

Отныне устанавливать и управлять пакетами Python так

pip3 install %package_name%

= 3 =
Установить несколько инструментов для разработки

(среди них idle3, бо обычный idle будет работать только с основной средой, python2)

sudo apt install build-essential libssl-dev libffi-dev python-dev idle3

= 4 =
Поставить Selenium WebDriver для Python

4.1
Поставить selenium (через pip)

pip install --user selenium

4.2
Поставить webdriver для Firefox

Если будет нужен WebDriver для хрома — https://chromedriver.chromium.org/downloads

Снять с https://github.com/mozilla/geckodriver/releases самый свежий по нумерации файл .tar.gz — Linux 64bit driver.

unzip содержимое .tar.gz (там исполняемый geckodriver) прямо в /usr/local/bin directory, бо это место сразу считывается в системной переменной PATH

sudo tar -C /usr/local/bin/ -xvf geckodriver-v0.30.0-linux64.tar.gz

Проверяем установку и работоспособность

python3 -c "import selenium; print(selenium.__version__)"

Ожидаемый результат: номер вроде ’3.141.0’

Из консоли запустить Python shell (команда ‘python3’).

Запустить последовательно четыре команды:

>>> from selenium import webdriver 
# В ответ не должно быть никаких ошибок
>>> browser = webdriver.Firefox() 
# Откроется новое окно Firefox. НЕ НАДО ЕГО СРАЗУ ЗАКРЫВАТЬ.

>>> browser.get('https://google.com/') 
# В открытом окне Firefox откроется страница google.com. Теперь это окно можно закрыть.

>>> exit() #Выход из Python shell

Если возникают ’selenium.common.exceptions.WebDriverException: Message: Failed to decode response from marionette’, тогда, вероятнее всего, не надо было закрывать окно браузера. Или смотрим https://stackoverflow.com/a/60178324 и другие ресурсы.

= 5 =
Поставить IDE

В предыдущей жизни я программировал в среде Eclipse. В мире Java оно когда-то было топовым топчиком, сегодня это обсуждается. Для меня это знакомое окружение, знаю где прячутся нужные настройки, все дела.

Но произошло неприятное: Eclipse падает всякий раз при копи/пэйст. Открыт соответствующий баг (в статусе open). Работать невозможно, вылечить пока что тоже.

Да и не эклипсом единым же.

Какие есть кроссплатформенные аналоги для Linux?

PyCharm от JetBrains — вроде адекватное IDE, но от него завыли кулеры и памяти поуменьшилось изрядно, при этом проект внутри ещё не создан. Нет.

Atom от GitHub, которое сегодня от Microsoft. Построен на электроне. Нет!

VS Code (он же Visual Studio Code) от Microsoft. Нет.

Sublime Text от кого-то из гугла (Джон Скиннер) показался самым адекватным. В основе огорчающе примитивный, но весь продвинутый функционал вроде подсветки, автодополнений и гита добавляется и тюнится соответствующими пакетами по необходимости — unix way. В принципе хочет каких-то денег (not a unix way!), но не настойчиво, поэтому всё норм. Есть много документации.

5.1
Поставить Sublime Text 3

Общая инструкция:

Install the GPG key:

wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -

Ensure apt is set up to work with https sources:

sudo apt-get install apt-transport-https

Select the Stable channel to use:

echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list

Update apt sources and install Sublime Text

sudo apt-get update && sudo apt-get install sublime-text

5.1.1
Основная настройка Sublime Text 3

Без расширения пакетами редактор почти ничем не отличается от Notepad. Философия его в том, что всё начинается с примитивного редактора, затем надо подключать ровно те расширения, которые нужны, чтобы получить инструмент под задачу, а не творить комбайн вместо лейки.

Для начала надо включить Package Control (инструкция):

  • Tools > Install Package Control…

Затем переключиться на Python.

  • Tools > Build System > Python

Сохранить файл на диск с расширением .py (hello.py).

Для разгона содержимое файла:

print("Hello")

Сбилдить билд:

  • Tools > Build, или же Ctrl+B

5.1.2
Расширение возможностей Sublime Text 3

  • Tools > Command Palette… (Ctrl+Shift+P)
  • Начать набор команды «install» > появятся подсказки > Выбрать «Package Control: Install package»
  • начать набор названия пакета, который надо установить > появятся подсказки > выбрать нужный и даблклик или Enter.

Последовательно установить

  1. AdvancedNewFile
  2. Anaconda (подсказки)
  3. Allautocomplete
  4. Autofilename
  5. Base16 Color Schemes (стили подсветки кода, мне зашло «base16-phd»)
  6. Brackethighliter
  7. Emmet (шаблоны для верстальщиков)
  8. Git
  9. GitGutter
  10. Markdown Preview
  11. requirementstxt
  12. SideBarEnhancements (работа с файлами на ssd прямо из редактора)
  13. SublimeLinter
  14. по слову Theme можно выбрать иную тему оформления (кагбэ рейтинг тем), для установки надо знать точное название.

Restart Sublime Text.

Тонкая настройка Sublime Text по-отдельности займет некоторое время, но оно стоит того.

5.2
Eclipse

Скачать новую версию Eclipse с https://www.eclipse.org/downloads/packages/
Можно взять, например, ’Eclipse IDE for Java Developers’ без изысков. Нужный файл: архив .tar.gz с названием ‘x86_64’

Надо грамотно распаковать его в каталог /opt/, иначе позже возникнут проблемы с установкой. Сделать это из-под действующего юзера через sudo

sudo tar xfz eclipse-inst-linux64.tar.gz -C /opt/

Появится каталог /opt/eclipse-installer

cd /opt/eclipse-installer && sudo ./eclipse-inst

Запускается GUI окно установки. Ставим «Eclipse IDE for Java Developers».

Самостоятельно разобраться с настройками установки. Из-за запуска с sudo могут подтянуться каталоги для root.
* каталог для установки Java (это неизбежно) по-умолчанию /usr/lib/jvm/* — это ок.
* каталог для установки самого Eclipse указать, например, /opt/eclipse-installer — позже его можно удалить.
* workspace выбрать свой в домашнем каталожике.

После запуска надо всё закрыть, бо это было запущено из-под sudo, что в дальнейшем не нужно. Открывать и настраивать всё надо из-под своего юзера с соответствующими правами.

Create a symbolic link in /usr/bin/

sudo ln -s /opt/eclipse/eclipse /usr/bin/eclipse

To make a desktop icon

Уже есть файл /opt/eclipse/icon.xpm Но можно иконку «eclipse.png» из сети скачать и положить, например, в каталог /opt/eclipse/icons/ и внести изменения в файл eclipse.desktop

sudo touch /usr/share/applications/eclipse.desktop

Отредактировать пустой файл eclipse.desktop через root (и nano, поэтому лучше в отдельной консоли, чтобы избежать сложностей с шорткатами):

sudo -e /usr/share/applications/eclipse.desktop

Contents of eclipse.desktop:

[Desktop Entry]
Encoding=UTF-8
Name=Eclipse
Comment=Development IDE
Type=Application
Terminal=false
Exec=/usr/bin/eclipse %U
Icon=/opt/eclipse/icon.xpm
StartupNotify=true
Categories=Application;Development;

Как в nano сохранить и выйти:

Ctrl+O

(будет указан какой-то временный файл) ввод

Ctrl+X

Удалить установочные файлы и папку (если они были положены в USER_NAME/Загрузки:

rm /home/USER_NAME/Загрузки/eclipse-inst-linux64.tar.gz
sudo rm -R /opt/eclipse-installer/

5.2.1
Поставить в Eclipse плагин PyDev

Запускаем Eclipse.

Выбираем Help — «Install New Software…»: Eclipse: Help – Install New Software… — «Add…». Появляется диалоговое окно: Window: Add Repository

В поле *Name* пишем: «Pydev and Pydev Extensions»,
в поле *Location*: «http://pydev.org/updates».
[OK]

Window: Install New Software – Pydev
Ставим галочку напротив «Pydev for Eclipse» и нажимаем [Next].

Eclipse Window: Install Details
[Next].

Eclipse Window: Review Licenses
Изучаем лицензию. Если лицензия подходит, помечаем «I accept the terms of the license agreement» и нажимаем [Finish].

На запрос: Eclipse Window: Do you trust this certificates?
[OK].

Pydev установлен.

Перезапускаем Eclipse.

Создаем проект ‘Hello World’

В пространстве Package Explorer нажимаем правую кнопку мыши, выбираем
New—Project…: Eclipse menu: New – Project…

Выбираем «Pydev Project» и нажимаем [Next]: Eclipse Window: New Project

На следующей странице: Eclipse Window: Create a new Pydev Project

*Project Name*: «Hello World»,
нажимаем ссылку:
«Please configure an interpreter in the related preferences before proceeding.».

Появляется окно настройки интерпретаторов Python: Eclipse Window: Python Interpreters

Нажимаем [New…].

В появившемся диалоговом окне: Eclipse Window: выбрать ’Add new python interpreter’

В поле *Interpreter Name* пишем «Python 3.x», где x – установленная версия интерпретатора Python.

В поле *Interpreter Executable* выбираем путь к исполняемому файлу Python.

Для Windows здесь будет: |C:\Python3.7\python.exe|, если был установлен интерпретатор Python 3.7 в директорию «C:\Python3.7».
Для Linux это: |/usr/bin/python| – для системной версии Python (для начала этот вариант подойдет), или |/usr/local/bin/python3.7| – для версии Python, установленной вручную.

[OK]

В окнах:
Eclipse: Select Python Libs
Eclipse: Python Interpreters – Added
Eclipse: Pydev perspective

Нажимаем «OK», «OK», «Yes».

В «Pydev Package Explorer» нажимаем правой кнопкой на директорию |\src| и выбираем в появившемся меню: New—Pydev Module: Eclipse: New – Pydev Module

Отныне и впредь: новый скрипт создаётся как New – “Pydev Module”, а не File.
Файлы не исполняемые.

Template для каждого Pydev Module по-умолчанию выбираем „Module: Main”.

Появится окно: Eclipse: Create new Pydev Module

В поле *Name* пишем «helloworld» (без .py, оно добавится само) и нажимаем [Finish].

Выбрать Template > New module = Main

Создаем программу «Hello World», описанную в предыдущей заметке
Eclipse: Python Hello World

Preferences > PyDev > Editor > Templates > Module: Main (Contex = New Module) > Edit

Вставить туда этот текст:

# ! /usr/bin/env python
# -*- coding: utf-8 -*-

'''
Created on ${date}
@author: ${user}
'''

if __name__ == '__main__':
${pass}${cursor}

Отныне при создании нового Pydev Module в нём будем появляться этот текст.

Запускаем скрипт (меню: Run – Run, Ctrl-F11): Eclipse: How to run Python Script

И видим результат в /Console/: Eclipse: Hello World result in Console

При запуске Run может возникнуть красный warning вроде
warning: Debugger speedups using cython not found. Run ‘”/usr/bin/python” “/opt/eclipse/plugins/org.python.pydev.core_8.1.0.202012051215/pysrc/setup_cython.py” build_ext –inplace’ to build. pydev debugger: starting (pid: 3502)

Это вопрос о работе выбранного для проекта интерпретатора (Python 3.7 в моем случае)

Надо открыть консоль и выполнить предлагаемую команду
“/usr/bin/python” “/opt/eclipse/plugins/org.python.pydev.core_8.1.0.202012051215/pysrc/setup_cython.py” build_ext –inplace

5.2.2
Запустить Selenium WebDriver для Python в Eclipse

В существующем проекте добавить новый PyDev Module > (template Empty) > имя какое угодно

Добавить в этот файл команды

from selenium import webdriver
browser = webdriver.Firefox()
browser.get('https://google.com/')
browser.quit();

Сохранить.

Ctrl+F11 (Run > Run) = Python Run

Откроется окно браузера, в нем страница google.com, затем страница закроется.

НЮАНСЫ

Если установка прошла в последовательности: Python > Selenium for Python > Eclipse > PyDev, то selenium подтянется в момент выбора интерпретатора Python в плагине PyDev.

Смотреть в Eclipse в Window > Preferences > PyDev > Interpreter > Python Interpreter

В верхней части будет указан ранее выбранный интерпретатор (например /usr/bin/python3

В нижней части для этого интерпретатора будет перечень Packages. Среди них найти ‘selenium’

Если случится так, что сперва были установлены Python и Eclipse, а Selenium был установлен позже, то при выполнении кода в нашем новом файле Eclipse сообщит про ’Unresolved Import’ и выполнять ничего не будет. Интерпретатор в проекте указан, но про Selenium он, почему-то, ничего не знает.

Неочевидное, но единственное решение:

  • сохранить изменения в файлах проекта
  • удалить из Eclipse весь существующий проект
  • Это удаление только из Eclipse, а не с жёсткого диска, но на всякий случай убедиться в том, что в диалоговом окне удаления проекта галочка ’Delete project contents on disk (cannot be undone)’ не нажата.
  • File —> Open Projects from File Systems…
  • Выбрать каталог со своим проектом > [Finish]
  • заново открыть файл с ‘from selenium import webdriver‘
  • Ctrl+F11 (Run > Run) = Python Run
  • Откроется окно браузера, в нем страница google.com, затем страница закроется. Всё норм.

Enjoy.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s