Настраиваем Eclipse PyDev под отладку Python 3.x с честным юникодом и кириллицей
Однажды, холодным зимним вечером, я внезапно вспомнил, что не поделился простым секретом, как добиться простого питоновского счастья за пределами ASCII резервации в такой замечательно-бесплатной IDE как Eclipse с плагином PyDev. Причём счастья с отладкой и честным юникодом, что означает следующее: если вы назвали свою переменную кириллицей, вы сможете посмотреть у неё значение, поставив breakpoint, написать пару строк текста по-русски и у вас ничего не отвалится.
Да-да, уважаемый читатель, Eclipse PyDev не очень-то дружит с символами за пределами 0x7F и отладка очень любит отваливаться всякий раз при попытке прочитать значение кириллической переменной. Да какое там, простое наведение мышкой на юникодовый символ приводит к фатальным последствиям при отладке кода написанного на Python 3.x (UTF-8). Если же настройки вашей файловой системы отличаются от UTF-8, поздравляю, вы не сможете даже запустить ваш скрипт. Я имею в виду именно то, что например под Windows ваш замечательный скрипт с единственным словом по-русски просто выведет из строя PyDev.
Возможно я перестарался, сгущая краски, не пугайтесь, починить это в состоянии мы сами, просто прочитав эту небольшую инструкцию. В награду мы получим бесплатное средство разработки, довольно удобное, фантастически гибкое в настройках и усовершенствовании, вплоть до разработки на нескольких языках, со встроенным инструментом версионирования.
Под катом инструкция и неприличных размеров картинки.
Готовим космодром
Наш будущий универсальный звездолёт под названием Eclipse скачивается без средств разработки для Python, для этого существует расширение Eclipse PyDev, его мы поставим сразу после скачивания. Выберите со страницы загрузки понравившуюся версию Eclipse. Я бы рекомендовал «Eclipse IDE for C/C++ Developers», всё-таки Python очень здорово работает с расширениями на C/C++, да и сам прекрасно встраивается в С++ код благодаря библиотеке Boost.Python.
По завершении скачивания, распакуйте папку eclipse в любое место на компьютере, согласующееся с вашим фэншуем.
Просто запустите eclipse\eclipse, скорее всего он просто запустится, но если вы до этого никогда не использовали JDK, он его затребует для работы, без него не запустится. JDK — это Java Development Kit, скачивается с сайта Oracle, с этой страницы загрузки.
При запуске Eclipse спросит куда ему сохранять все проекты, укажите ему ваш Workspace (запомните это слово, вам его ещё в меню настроек искать). Наконец загрузившись, это дитя Java покажет вам свой Welcome, не пугайтесь, просто закройте его.
Как-то вот так всё это будет выглядеть в конце нашего экскурса:
Ну а пока давайте начнём с самого главного, с того из-за чего сыр-бор — с кодировки. Самое главное убедиться, что ваше рабочее место по умолчанию настроено на кодировку UTF-8.
Идём в меню Window => Preferences выбираем там General => Workspace в самом низу страницы нужно указать параметр «Text file encoding«, если он не выставлен в UTF-8 по умолчанию, пропишите это строковое значение в поле Other, как показано на картинке:
Итого, у нас есть всё, чтобы начать разрабатывать приложение. Ах нет, не всё, Python писать и отлаживать по-прежнему не на чем. Нужен плагин PyDev.
Готовимся к приземлению на Python-3
Установка PyDev — пожалуй самая простая часть работы по настройке рабочего места.
Идём в меню «Help => Eclipse Marketplace. » набираем в строке поиска PyDev и нажимаем в найденом плагине кнопку [Install]
После чего со всем соглашаемся, ждём загрузку и установку, потом нам предложат перезапустить Eclipse, почему бы и перезапустить, раз просят.
После установки нам предлагается поиграть в прятки с установленным окружением — перспективой (Perspective) для разработки в Python, я подскажу где его найти, заодно сразу переключимся на перспективу PyDev. В правом верхнем углу есть ряд из маленьких кнопок переключения перспективы, обычно там что-то вроде C++, Debug, Java, SVN и ма-а-аленького плюсика слева от них, вот на него-то и надо нажать, чтобы добавить перспективу PyDev.
В открывшемся окне Open Perspective выбираем окружение для разработки Python — свежеустановленный PyDev.
Мы должны сразу после выбора переключиться на перспективу PyDev, в меню и в основном окне должны произойти некоторые изменения, которые вы возможно не сразу заметите, но они переключают создание новых проектов и файлов и процесс отладки в режим разработки на Python.
Почти что всё. Мы готовы к настройке и запуску своего первого проекта на Python 3 в Eclipse PyDev.
Первый проект
Ну что ж, давайте его создадим, наш первый проект.
Меню File => New => PyDev Project, заполняем имя, выбираем версию Python 3.x и теперь самое главное: нужно указать где расположен интерпретатор Python, для этого нужно нажать на ссылку «Please configure an interpreter. »
Всё, можем нажимать Finish.
Наш первый скрипт
Настало время попытаться запустить наш скрипт, а заодно узнать для чего предназначена данная статья.
Меню «File => New => PyDev module», либо просто правой кнопкой по проекту «New => PyDev module», даём нашему новому скрипту имя и нажимаем Finish.
Файл скрипта автоматически создастся в кодировке, указанной в настройках Workspace, которые мы задали в самом начале. В Python 3.x весь код по стандарту в кодировке UTF-8.
Для проверки поддержки юникода пишем такой скрипт:
слово = "Сначала было слово. " print(слово)
Самое время его отладить!
Жмакаем на зелёного жука (De-Bug) или просто F11. Выбираем Python Run (это явно не юнит-тест). Поехали…
… Приехали.
Хе-хе, зато бесплатно!
Смотрим в файл где мы свалились и видим банальный косяк с кодировкой в _pydev_execfile.py
Откройте его по ссылке в стектрейсе консоли Eclipse.
Первая же строчка в файле как бы намекает, что для Python 3.x здесь ещё не валялся не то что конь, тут даже пони не прилёг.
Вот как выглядит наш замечательный файл:
#We must redefine it in Py3k if it's not already there def execfile(file, glob=None, loc=None): if glob is None: import sys glob = sys._getframe().f_back.f_globals if loc is None: loc = glob stream = open(file, 'rb') try: encoding = None #Get encoding! for _i in range(2): line = stream.readline() #Should not raise an exception even if there are no more contents #Must be a comment line if line.strip().startswith(b'#'): #Don't import re if there's no chance that there's an encoding in the line if b'coding' in line: import re p = re.search(br"coding[:=]\s*([-\w.]+)", line) if p: try: encoding = p.group(1).decode('ascii') break except: encoding = None finally: stream.close() if encoding: stream = open(file, encoding=encoding) else: stream = open(file) try: contents = stream.read() finally: stream.close() exec(compile(contents+"\n", file, 'exec'), glob, loc) #execute the script
Критическим взглядом окидываем поле боя и находим несколько косяков:
1. Для Python 3.x encoding всегда будет None, что фатально в Windows где настройки файловой системы далеко не UTF-8, да и вообще это неправильно требовать первой строкой указание кодировки от файла с кодом Python 3, который всегда UTF-8.
Правится банальной проверкой sys.version_info[0] >= 3
2. Для файлов начинающихся с BOM не обрезается первый символ, а compile очень чувствителен ко всему лишнему, он банально не поймёт символов в начале выполнения скрипта.
Не вдаваясь в тонкости, можно поправить всё на скорую руку например вот так:
def execfile(file, glob=None, loc=None): import sys if glob is None: glob = sys._getframe().f_back.f_globals if loc is None: loc = glob if sys.version_info[0] >= 3: encoding = 'utf-8' else: stream = open(file, 'rb') try: encoding = None #Get encoding! for _i in range(2): line = stream.readline() #Should not raise an exception even if there are no more contents #Must be a comment line if line.strip().startswith(b'#'): #Don't import re if there's no chance that there's an encoding in the line if b'coding' in line: import re p = re.search(br"coding[:=]\s*([-\w.]+)", line) if p: try: encoding = p.group(1).decode('ascii') break except: encoding = None finally: stream.close() if encoding: stream = open(file, encoding=encoding) else: stream = open(file) try: contents = stream.read() if sys.version_info[0] >= 3 and contents.startswith('\uFEFF'): contents = contents[1:] #Remove BOM finally: stream.close() exec(compile(contents+"\n", file, 'exec'), glob, loc) #execute the script
После этого маленького фикса у нас всё просто замечательно выполняется. Осталось рассказать про отладку и маленький параметр, без которого наш звездолёт не взлетит дальше выполнения кода.
Режим отладки и юникод
Ставим breakpoint на второй строке, будем смотреть содержимое переменной слово — делается это двойным кликом по области слева от нужной строчки кода.
Запускаем режим отладки по F11 либо кликом на зелёную букашку в тулбаре. Встаём на breakpoint.
(Кстати, лирическое отступление, при переходе в Debug-перспективу, уделите пару минут, перетащите всё ненужное вниз.)
Теперь пробуем сделать следующее: наведите на переменную слово курсор мыши. Вам ведь наверняка интересно что внутри.
… ох, снова упали. В этот раз совсем загадочно — работа скрипта завершилась, а вот сам процесс отладки умер в мучениях.
Зато бесплатно.
Хотя здесь уже всё довольно просто — идём в eclipse.ini по соседству от исполняемого модуля и добавляем там строку:
-Dfile.encoding=UTF-8
Сохраняем инишку, перезапускаем Eclipse, чтобы изменения вступили в силу.
Всё.
Можете теперь отлаживаться сколько угодно!
Называйте переменные хоть кириллицей, хоть на хинди, именуйте по-русски классы и методы, всё что угодно!
Я не говорю что это правильно, я просто даю вам эту возможность, точнее возвращаю то, что отнято прожорливым бесплатным Eclipse PyDev.
Полезные ссылки
Я решил всё же дать ссылку на архив с настроенным на разработку в Python 3.x Eclipse PyDev: eclipse.7z (~171 MB)
После скачивания придётся всё равно сделать следующее:
1) — перенастроить папку Workspace
2) — настроить в Window => Prefereces => General => Workspace кодировку UTF-8
3) — открыть перспективу PyDev (изначально будет спрятана) через Open Perspective
4) — при создании первого проекта указать местоположение интерпретатора Python
Заключение
Вы вероятно спросите меня, почему я не дал сразу, в первом же абзаце, скачать готовый архив с пропатченным Eclipse вместе с PyDev.
Я отвечу, что решил поделиться опытом несложного, но очень полезного решения, дающее впечатляющий PROFIT в разработке на Python 3.x.
Вам ничего не стоит пройти по шагам и получить отличное средство разработки, а заодно понять некоторые тонкости в работе Python 3 и разницу со старым и не всегда добрым Python 2.x.
Помните: вам незачем ограничивать себя набором ASCII и вообще ограничивать себя чем бы то ни было.
Удачи в разработке!
Установка интерпретатора Python и среды разрабоки PyDev для Eclipse
Всем привет, сегодня я расскажу о том, как вам начать разрабатывать на Python свои программы, а именно о установке интерпретатора, а также о среде разработки PyDev для Eclipse.
Установка интерпретатора Python
Интерпретатор нужен для обработки инструкций исходного кода сценариев на языке Python, последующей компиляции в байт-код и выполнения на виртуальной машине. О всех этих понятиях и как работает Python рассказываю в следующей статье.
Установка для Windows
Скачайте пакет ActivePython и установите его, почему именно этот пакет расскажу в следующей статье. Далее, запустите консоль Windows (cmd.exe) через Пуск->Выполнить (Win+R) и введите команду «python», вы увидите следующее:
C:\Documents and Settings\adw0rd>python ActivePython 2.6.2.2 (ActiveState Software Inc.) based on Python 2.6.2 (r262:71600, Apr 21 2009, 15:05:37) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
Если у вас вышло следующее сообщение:
C:\Documents and Settings\adw0rd>python "python" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
то вам следует прописать путь до "python.exe" в системную переменную "Path".
Установка Python для FreeBSD
Тут все проще, сначала обновите порты, далее просто установите Python из портов:
# cd /usr/ports/ # portsnap fetch update # cd lang/python # make install clean # rehash
rehash - нужен для того, чтобы сразу же, без перезагрузки терминала вам была доступна команда "python", без необходимости ввода полного пути до исполняемого файла!
Если вам нужна конкретная версия, то на момент написания статьи доступны следующие версии:
lang/python23 lang/python24 lang/python25 lang/python26 lang/python30 lang/python31
Интегрированные среды разработки (IDE)
В качестве IDE для Python существует куча программ, можно выбрать IDLE, как рекомендует автор книги "Изучаем Python" Марк Лутц, или NetBeans например, однако я рекомендую установить Eclipse и расширение PyDev.
PyDev для Eclipse
Заходим на страницу расширения: Eclipse / PyDev и копируем "Update Site URL":
Далее, в Eclipse, проходим в окно "Help -> Install new software. " и вбиваем туда эту ссылку, жмем "Finish" и следуем инструкциям Eclipse, он вас попросит перезагрузить IDE, перезагрузите. Далее, добавьте новую перспективу: "Windows -> Open Perspective -> Other. -> Pydev", жмем "OK" и все, вы установили PyDev, переходите к следующей статье.
Комментарии
спасибо. мне это должно пригодиться в скором времени
Пишем на Python в Eclipse
Для поддержки языка программирования Python в Eclipse нужно установить PyDev. Для этого открываем Marketplace:
В строке поиска наберите “Python” и нажмите клавишу Enter. В списке кликаем “Install” у пункта “PyDev — Python IDE for Eclipse”:
Дальше прокликиваем все остальные окошки, со всем соглашаемся. На странице с лицензионным соглашением ставим переключатель на “I accept the terms of the license agreements”. Перезапускаем Eclipse, как нам и предлагают.
При запуске у вас появится сообщение, что Python не настроен. Кликаем мышкой на “Manual config”:
Открывается вот такое окно:
Теперь нам нужно установить интерпретатор Python. Как это делается под Linux я уже рассказывал вот в этой статье. Под Windows же нам нужно скачать установщик с официального сайта. После установки возвращаемся в Eclipse и выбираем установленный Python. У меня он по умолчанию установился по пути:
Eclipse Download and Installation
(for Python) InstructionsYou may want to print these instructions before proceeding, so that you can refer to them while downloading and installing Eclipse. Or, just keep this document in your browser. You should read each step completely before performing the action that it describes.
This document shows downloading and installing Eclipse (2021-06) on Windows 10 in Summer 2021. You should download and install the latest version of Eclipse. The current latest (as of Summer 2021) is Eclipse 2021-06.
Remember that you must install Python, and Eclipse as 64-bit applications. In fact, Eclipse can be installed only as a 64-bit application.
Eclipse: (2021-06)
The Eclipse download requires about 54 MB of disk space; keep it on your machine, in case you need to re-install Eclipse. When installed, Eclipse requires an additional 350 MB of disk space.
Downloading
The following page will appear in your browser. If your computer uses Windows, continue below; otherwise choose either Mac OS X or Linux instead.
You will see the following page (don't worry about the name of the institution underneath the orange Download button).
The following pop-up window titled Opening eclipse-inst-jre-win64.exe will appear.
Click the Save File button.
This file should start downloading in your standard download folder. This file is about 115 Mb so it might take a while to download fully if you are on a slow internet connection (it downloads quickly over a cable modem).
The file should appear as
Terminate the tab browsing the Eclipse webpage.
Installing Eclipse (for Python)
Python should be installed before installing Eclipse
Double-click the icon labeling the file eclipse-inst-win64.exe.
It might take a few seconds to a a few minutes, but watch for the following Eclipse Installer pop-up window to appear.
It will soon disappear and be replaced by another Eclipse Installer pop-up window. Scroll down in this window until you see Eclipse IDE for Eclipse Committers
Another Eclipse Installer pop-up window will appear.
The Eclipse Installer pop-up window will continue to show a green progress bar
Eventually, an Oomph License Confirmation pop-up window will appear.
The Eclipse Installer pop-up window will continue to show a green progress bar
Eventually, the Ecliplse Installer pop-up window will appear.
The installer will create a shortcut (the "death-star" icon) on your desktop to the eclipse.exe file in this eclipse folder. Generally, you will double-click this icon to start Eclipse.
But the Eclipse Installer will automatically start it for you, at which point the following splash window will appear
and then an Eclipse Launcher pop-up window will appear.
In the Workspace text box, your name should appear between C:\Users\ and \eclipse-workspace, instead of pattis.
Leave unchecked the Use this as the default and do not ask again box. Although you will use this same workspace for the entire quarter (checking projects in and out of it), it is best to see this Workspace Launcher pop-up window each time you start Eclipse, to remind you where your workspace is located.
In fact, it is a good idea to create on your desktop a shortcut to your workspace folder; but you must click Launch (see below) before Eclipse creates this folder and you can create a shortcut to it.
If you have an older version of Eclipse installed, the following pop-up window will apperar.
If this pop-up window appears, click Continue to update the workspace for the newer version of Eclipse.
Progress bars will appear on the Splash window as Eclipse loads.
Eventually the Eclipse Workbench will appear.
If it shows as being covered with a Welcome tab, terminate it by clicking X on the Welcome tab. You will not see the Welcome tab when you start Eclipse again, after this first time.
If it further shows a Donate tab, terminate it by clicking X on the Donate tab.
The Install pop-up window will appear.
In a few seconds the information under Name should change from
There is no site selected to Pending and ultimately to
Select only the top PyDev checkbox; do NOT select the PyDev Mylyn Integration (optional) box.
Check before proceeding that the Install pop-up window appears as
A new Install pop-up window will appear.
A new Install pop-up window will appear.
Select the I accept the terms of the license agreement radio button, so the window appears as
The lower right-hand corner of the eclipse-workspace - Eclipse IDE window will show the various operations it is performing and a progress bar for each one.
Because the installer is fetching various files online, this process might take a few minutes.
If you see a Security Warning pop-up window
Click Install anyway.
The installation will finish (the progress bar will disappear).
A Software Updates pop-up window will appear.
Eclipse will terminate and restart. Once again will show the Eclipse Workbench.
As you did in step 4, if you see a Welcome Tab covering the window, terminate it by clicking OK on the Welcome Tab.
If a Windows Security Alert pop-up window appears
click Allow Access.
Notice in the upper right-hand corner of the Eclipse Workbench, you should see the following 2 icons.
The Eclipse Workbench will now appear as
Repeat this process selecting the "green bug" icon labelled Debug in the Open Perspective pop-up window. Now the top-right corner should show four icons:
Next, right-click the "J" icon (the second one) and then click Close.
Finally, click on the "double-snake" icon. Now the top-right corner should show three icons:
- Disclose PyDev by clicking the > in front of PyDev or double-clicking PyDev (after the >); the > changes to a v.
- Disclose Interpreters by clicking the > in front of Interpreters or double-clicking Interpreters (after the >); the > changes to a v.
- Select/Click Python - Interpreter.
The Preferences pop-up window should appear as follows.
A Select Interpreter and Open pop-up window appear. In the Open pop-up window, navigate to that folder in which Python was installed: C:\Users\pattis\AppData\Local\Programs\Python\Python39.
Double-click python.exe (or select it and click Open).
Change the Interpreter Name in the Select Interpreter pop-up window from python to Python39 (or whatever the latest version of Python you have installed). The Select Interpreter pop-up window should appear as
A Selection needed pop-up window will appear.
Your window should have all four of these checkboxes checked.
Click the Libraries tab (2nd one) above the lower pane. The Preferences pop-up window will appear as
Actually, on my system I had to first shrink the Name tab and then enlarge the Location tab for the top pane, so that I could see the entire path to the Python interpreter.
A Progress Information pop-up window will appear.
During installation, it will show the various operations it is performing and a progress bar for each one. Eventually the installation will terminate.
If the following pop-up window appears
Ensure the "Public networks, such as those in airports. " checkbox is NOT checked, and then click Allow Access.
- Select Window | Preferences.
- Disclose PyDev by clicking the + in front of PyDev or double-clicking PyDev (after the +); the + changes to a -.
- Disclose Interpreters by clicking the + in front of Interpreters or double-clicking Interpreters (after the +); the + changes to a -.
- Select Python - Interpreter.
- Click the Libraries tab (2nd above the bottom pane).
If you do, Click the Exit button.
Eclipse will terminate.
Eclipse is now installed for Python. It can be activated by click the Eclipse shortcut icon which should appear on your desktop. It's actual name will be Eclipse IDE for Eclipse Committers - 2021-06 but I suggest just renaming it Eclipse.