Этот релиз является последним крупным обновлением с новой функциональностью в 2016 году.
С момента предыдущего релиза PyCharm прошло ровно 4 месяца. За это время PyCharm получил ряд новых полезных улучшений в инструментах для Python, Django, веб и научной разработки, которые, как всегда, тесно интегрированы и эффективно работают друг с другом. Сегодня мы рады рассказать, что же интересного и важного появилось в новой версии PyCharm.
Полная поддержка Python 3.6
В первую очередь отметим, что PyCharm 2016.3 полностью поддерживает последний Python 3.6. Сейчас Python 3.6 находится в стабильной beta-стадии, и мы хорошо подготовились к его официальному релизу, запланированному на декабрь этого года. Поддерживаются следующие стандарты:
- PEP 526: Синтаксис аннотаций переменных. Теперь PyCharm понимает новый синтаксис аннотаций типов переменных и использует эту информацию для вычисления типов в коде. В конечном счете это выражается в улучшенном анализе и автодополнении кода. Также по Alt+Enter PyCharm умеет конвертировать аннотации в комментариях в новый синтаксис и обратно.
- PEP 498: Форматированные строчные литералы. PyCharm понимает синтаксис новой конструкции f-strings и предоставляет специальное автодополнение внутри f-strings. По Alt-Enter можно автоматически сконвертировать традиционно отформатированные строки с помощью % и str.format() в новый формат, введенный в Python 3.6.
- PEP 515: Подчеркивания в численных литералах. Этот стандарт расширяет синтаксис Python. Теперь подчеркивания могут служить разделителями между цифрами в численных литералах.
- PEP 525 и PEP 530. Эти два стандарта описывают асинхронные генераторы и включения. Для них мы добавили в PyCharm новые инспекции.
Поддержка Django
Мы дополнили поддержку Django-проектов парой небольших улучшений:
- В PyCharm 2016.3 можно создавать новый Django-проект для запуска и отладки на удаленной машине без необходимости настраивать локальный интерпретатор. Можно указать интерпретатор, находящийся на VM, в Docker-контейнере или удаленном сервере, на этапе создания проекта.
- Мы реализовали автодополнение, специфичное для Django-форм в Django Views, реализованных в классах, — таким же образом, как в прошлом релизе для Views, реализованных через функции.
Многострочные команды в Python-консоли
В этом релизе мы пофиксили много багов в Python-консоли, в основном касающиеся форматирования и отображения многострочных команд. Теперь экспериментировать и писать код в консоли стало намного удобнее и визуально приятнее. В дополнение ко многим небольшим улучшениям Python консоли, мы добавили автодополнение для IPython по нажатии Tab.
Обозреватель переменных
Теперь в режиме отладки в рабочей области находятся только переменные, используемые в текущем проекте. Все служебные и системные переменные скрыты под разделом “Special Variables”. Если используется IPython-интерпретатор, все служебные переменные IPython также помещаются в “Special Variables”:
Для больших массивов, например массивов NumPy или pandas DataFrames, мы добавили возможность просматривать их в отдельном специализированном обозревателе. Достаточно нажать “View as...” в обозревателе переменных:
Активация virtualenv в терминале
Если в качестве интерпретатора проекта используется virtualenv, виртуальное окружение автоматически активируется при запуске встроенного терминала. Автоматическая активация venv работает для bash, zsh, fish и Windows cmd.
Поддержка Docker Compose
На этапе конфигурации удаленного интерпретатора, при выборе Docker Compose конфигурации теперь можно указать несколько файлов, расширяющих Compose-конфигурацию. Если Compose-файлы используют переменные окружения, задать их теперь можно на этом же этапе в специальном поле.
Coverage для ветвлений
В PyCharm 2016.3 встроенный инструмент для анализа покрытия кода был улучшен благодаря новой опции “Branch coverage”. Эта опция по умолчанию отключена, но может быть активирована в настройках Settings (Preferences) | Build, Execution, Deployment | Coverage | Python coverage. Когда опция активирована, PyCharm добавляет информацию о построчном покрытии альтернативных ветвлений в коде к стандартному отчету профилировщика, как показано на скриншоте.
Построчное профилирование
В предыдущем релизе мы добавили поддержку VMprof и уже в этом релизе улучшили ее, добавив режим “profile lines” к отображению прямо в редакторе кода. Этот режим работает по умолчанию при использовании VMprof в режиме профилирования. После сбора статистики, в дополнение к просмотру стандартных отчетов профилировщика, PyCharm отображает результаты построчной профиляции прямо в редакторе. Строки, использующие значительную часть процессорного времени, отображаются разными цветами, от желтого к красному, по возрастанию ресурсоемкости. Чтобы попробовать этот режим, нужно установить пакет vmprof на текущий интерпретатор проекта.
Прочие улучшения
В этом релизе также значительно усовершенствована поддержка передовых веб-технологий: поддержка Flow, улучшенная поддержка TypeScript, поддержка PostCSS, Stylelint и многое другое:
В PyCharm 2016.3 также вошли многие новые возможности и усовершенствования из IntelliJ Platform: улучшены эргономические характеристики и скорость работы журнала VCS, доработано диалоговое окно объединения (Merge), подсветка синтаксиса в диалоговых окнах Diff и Merge, а также интерфейс для управления удаленными репозиториями Git в проекте:
Кроме того, улучшены средства работы с базами данных — спасибо коллегам из команды JetBrains DataGrip:
Ниже короткое демо на английском от Пола Эверита, нашего девелопер-адвоката:
Если вам стало интересно, мы предлагаем 30-дневную бесплатную пробную версию для полнофункционального PyCharm Professional Edition, а в разделе цен можно узнать о стоимости подписки. Многие улучшения этого релиза также доступны в бесплатном PyCharm Community Edition. Различия между PyCharm Professional и Community можно посмотреть здесь.
Узнайте больше о нововведениях и улучшениях в PyCharm 2016.3 на нашем сайте.
Следите также за статьями и обновлениями в нашем англоязычном блоге. Мы будем рады ответить на любые ваши вопросы в комментариях.
Программируйте с удовольствием!
Команда JetBrains
Комментарии (65)
sergsh
24.11.2016 19:51+1Есть ли по Pycharm подробный мануал на русском языке, для новичков в Python? Или это может быть только для коммерческой версии?
dmitryfilippov
24.11.2016 19:52+2К сожалению документации, гайдов или туториалов на русском нет и не планируется.
DjoNIK
25.11.2016 12:34Уж не знаю, покроет ли ваши потребности PyCharm Edu/.
Там, правда, все в куче и Python, и по самой среде.
Radist_101
25.11.2016 15:02Можете посмотреть видео на русском https://www.youtube.com/watch?v=DpscmxH2LQU
mezastel
24.11.2016 20:16Какова ситуация с notebooks на high-DPI?
dmitryfilippov
24.11.2016 21:37Никаких улучшений в этом направлении пока не было. Но мы планируем серьезнее заняться Notebook.
alexey-m-ukolov
24.11.2016 20:21Я не питонист, поэтому задам, возможно, глупый вопрос: а почему не реализовали семантическую подсветку? Она не актуальна в Питоне или, может, реализовали, но не упомянули в анонсе?
dmitryfilippov
24.11.2016 21:41Мы ее не реализовали в этом релизе. На сколько мне известно, пока семантическая подсветка есть только в IntelliJ IDEA 2016.3, и то не по умолчанию. Возможно мы включим эту функциональность в следующем релизе. В любом случае кое что нужно доработать.
alexey-m-ukolov
25.11.2016 07:27Ещё она есть в CLion 2016.3. Собственно, я потому и заинтересовался, что PyCharm — первый продукт анонсируемый на этой неделе, в котором про неё не сказали. Вот и задумался — это в Питоне что-то особенное или какие-то другие причины.
PQR
25.11.2016 14:54Семантическая подсветка также есть и в свежем PhpStorm 2016.3.
Похоже, команда PyCharm отстала от коллег из соседних отделов.
Grief
24.11.2016 20:40Не злорадства ради, но может ли быть полная поддержка 3.6 без 3.5?
Синтаксический анализатор до сих пор не понимает простую конструкцию
for i in range(10): self.assertEquals(i * 2, await self.x(i))
el777
24.11.2016 22:06В 2016.3 (даже CE) уже выглядит нормально.
Что понравилось — подсветка ключевых слов и сообщения об ошибках синтаксиса зависят от выбранной версии интерпретатора.
erdbeeranke
28.11.2016 17:28оффтопика ради, что за тема?
el777
28.11.2016 18:25Monokai
хотя иногда (при лампах дневного света) в ней хочется посветлее фон.
А для обычных накаливания — норм.
tbicr
24.11.2016 23:17+1Когда уже можно будет обновиться через apt, а не скачивать архив с сайта?
Djaler
25.11.2016 16:06Абсолютно поддерживаю. В 2016 устанавливать программы распаковкой архивов как-то вообще не торт.
Sirikid
26.11.2016 03:52Неужели для вашего дистрибутива нету репозитория с тем же самым архивом внутри deb-а?
Infernion
28.11.2016 17:28Не знаю как там сейчас в Ubuntu но в Arch все можно установить с репозитория:
yaourt -S pycharm-professional
dmitryfilippov
28.11.2016 17:30+1Мы сейчас как раз обсуждаем как это реализовать. Будем делать для всех продуктов единообразно.
funca
25.11.2016 00:28Проект на Django, тесты на py.test. В настройках PyCharm выбран py.test в качестве тестового фреймворка.
Если в настройках включить так же поддержку Django, то PyCharm начинает запускать тесты через свой аналог manage.py test, вместо py.test. Хотелось бы, чтобы поддержка Django не меняла способ запуска тестов.dmitryfilippov
25.11.2016 16:29На самом деле это так by design. Если необходимо запускать не Django тесты, то можно создать дополнительную run configuration. Оригинальный issue с комментариями https://youtrack.jetbrains.com/issue/PY-19727
funca
28.11.2016 22:24Ничего не смыслю в дизайне. Наверняка, дизайнеры старались сделать как лучше. Однако, пользоваться будет гораздо удобнее, если появится возможность эту фичу отключить. Plsss… :)
Meklon
25.11.2016 01:29+6Хотел сказать огромное спасибо за ваш продукт) В том числе благодаря ему мы двигаем науку понемногу. Обычно вперед) Хотя, конечно, работаю с Community edition. Денег на ПО у нас очень редко выделяют. Впрочем, это не мешает пользоваться им с удовольствием.
Terras
25.11.2016 01:51Вопрос:
Когда заканчивается лицензия — он продолжает работать (но обновления не поступают), либо он переходит в режим фрии версии?dmitryfilippov
25.11.2016 16:26Если на старой лицензионной модели (лицензия куплена до 2 ноября 2015) то вы просто не получаете обновления а продолжаете пользоваться последней версией на момент истечения срока лицензии.
С новой подписочной можелью немного сложнее. По истечении подписки, если не продлевать, то придется откатиться на версию, которая была во время покупки (т.е. лишиться всех обновлений за время подписки).
Boggard
25.11.2016 08:21консоль в версии под mac os сломали ( раньше подхватывались все переменные окружения текущего пользователя, а сейчас тупо bash грузится и все…
dmitryfilippov
25.11.2016 16:30Спасибо! Мы планируем пофиксить это в ближайшем баг апдейте. https://youtrack.jetbrains.com/issue/IDEA-164435
ef_end_y
25.11.2016 11:11-5Продукт, конечно, прекрасный, но уверен, если бы вы установили меньшую цену, то покупок было бы на порядок больше. Знаю много людей, которые не могут психологически принять такую цену, но готовы в принципе платить. Я сам разработчик и почти 10 лет продаю биллинг, так вот крупные компании просто не понимаю за что они должны платить такие деньги (на самом деле небольшие, меньше одной зп специалиста) и фиг им объяснишь, что твой продукт окупится в тысячу раз. Пришлось снизить цены, покупают. Тоже с pycharm — возможно он стоит таких денег, ну не могут пока психологически наши прогеры принять такие цены.
ef_end_y
25.11.2016 12:21-1В момент написания был уверен, что будут минусы. Хабравчане не склонны к диалогу, жаль
s_suhanov
25.11.2016 15:26+19 долларов в месяц весь первый год.
Второй год — скидка 20%.
Третий год — скидка 40%.
Куда уже меньше? :)
alexey-m-ukolov
25.11.2016 16:16Справедливости ради, подписка для организаций в два раза дороже. А разработчики не все готовы тратить личные деньги.
Но мне тоже не кажется, что подписка сейчас дорогая.
93kostya93
25.11.2016 16:30+2Минусуют, кмк, потому, что наверняка в JB есть ни один человек (скорее даже отдел), который занимается тем, что анализирует различного рода данные (по продажам и прочей активности, связанной с продуктами JB и вообще с миром IT), у которого, в частности, стоит задача поиска оптимально стратегии продаж (цена (возможно в зависимости от региона), подписка или единоразовый платеж и т.д.). И вероятность того, что существует такой человек со стороны, который не имея подобной информации может в двух предложениях может описать действия, который нужно произвести компании для того, чтобы увеличить прибыль, крайне мала. А вы претендуете на подобное.
ef_end_y
25.11.2016 16:43Если так, то прекрасно. Хотя, зная как маркетологи из-за сиюминутной выгоды убивают бизнес, предположил, что здесь может быть такая же ситуация
Regis
27.11.2016 14:38Эм, вы вообще в курсе как цена на продукты JB исторически менялась? Или сколько стоят/стоили продукты близкого уровня от конкурентов? Я бы сказал, что у JB сейчас очень и очень низкие цены.
Regis
27.11.2016 14:36если бы вы установили меньшую цену, то покупок было бы на порядок больше
Откуда такая уверенность? Мне, например, кажется, что даже если цену уменьшить в 2 раза, то покупателей в два раза больше не станет.
iroln
25.11.2016 11:21Теперь экспериментировать и писать код в консоли стало намного удобнее и визуально приятнее. В дополнение ко многим небольшим улучшениям Python консоли, мы добавили автодополнение для IPython по нажатии Tab.
Это, конечно, хорошо, но когда же вы обратите внимание вот на это?
https://youtrack.jetbrains.com/issue/PY-10985
3 года уже висит! И экспериментировать в консоли без быстрого автодополнения из истории ну совсем не приятно!
killla
25.11.2016 17:20Для тех кто уже не студент. На stepik.org при обучении на IT-шных курсах можно получить образовательную лицензию PyCharm (и не только) на 3 месяца. С возможностью продления.
Yahweh
25.11.2016 19:28Забагованный релиз какой-то. С чем уже столкнулся:
- один раз завис
- Reformat Code (Ctrl+Alt+R) не работает в html документе (по крайней мере с django-шаблонизатором), но в некоторых файлах работает (в том числе с шаблонизатором)
- В дополнение к предыдущему: пишу в html — block, нажимаю Tab, чтобы "раскрыть" его — получаю:
при этом курсор стоит не внутри block, а перед открывающейся фигурной скобкой {%
dmitryfilippov
28.11.2016 16:58Это очень странное повдение. Могу я вас попросить зарепортить это к нам в трекер? https://youtrack.jetbrains.com/issues/PY Очень помогут логи (Help | Find logs in files).
В settings | Languages & Frameworks | Python Template Languages что стоит?Yahweh
28.11.2016 17:08html, xhtml, xml
С шаблонами вообще все плохо стало: раньше можно было сразу в файл стилей или js-скрипт перейти с помощью gd (VimIdea использую, не помню аналог команды в ide), а теперь не работает, py файлах норм
Yahweh
29.11.2016 12:30Полагаю я нашел "виновника" — это либа django-environ, если ее не использовать, все нормально работает. Видимо pycharm не понимает где искать файлы и тд
При этом в pycharm 2016.2 все нормально работало и с django-environ.
Позже зарепортю вам в трекер.
ErhoSen
26.11.2016 17:30dmitryfilippov Спасибо за постоянные улучшения моего любимого продукта!
Есть одна проблема, которая не даёт мне спать по ночам. А именно, автоматическая генерация Docstrings из аргументов функции. Мы в своём проекте используем PyContracts, как библиотеку проверки типов. У неё слегка отличающийся синтаксис аннотаций, который вы из-коробки не поддерживаете.
Возможно ли будет когда-нибудь описать свой стиль аннотаций?
Дефолтный ReStructuredTextРезультат Insert documentation string stub
dmitryfilippov
28.11.2016 17:09PyCharm поддерживает несколько форматов docstrings.
В settings | tools | Python Integrated Tools есть раздел Docstrings format.
Кроме restructured text поддерживаются Epytext, numpy, google…
Кажется PyContracts использует свой формат отличающийся от всех поддерживаемых… Тем не менее, я рекомендую завести feature request https://youtrack.jetbrains.com/issues/PY
Djaler
28.11.2016 00:41dmitryfilippov, что насчёт автодополнения для PyQt?
dmitryfilippov
28.11.2016 17:14Оно должно работать. Что именно не автодополняется?
Лучше всего описать проблему или запрос прямо в трекере https://youtrack.jetbrains.com/issues/PY?q=pyqt
Meklon
28.11.2016 13:27dmitryfilippov Кстати, а как корректно tar.gz версию для Linux обновлять? Там sh-скрипт, насколько я понимаю. Uninstall предыдущей версии как корректнее сделать?
dmitryfilippov
28.11.2016 17:12Корректно распаковать tar.gz рядом с предыдущей версией (отдельно)… запустить, импортировать настройки и проверить что все работает. После этог опможно просто удалить папку с предыдущей версией.
Meklon
28.11.2016 17:32Спасибо. Под kde пришлось руками kdeinit править в файле .desktop. deb-файл и репозиторий был бы уместнее. Но это, конечно, вопрос ваших приоритетов в разработке. Просто отвык что-то руками мимо пакетного менеджера делать.
dmitryfilippov
28.11.2016 18:03Согласен. Устанвливать распаковкой архива и руками добавлять десктопный лаунчер не самое удобное занятие. Мы сейчас обсуждаем как сделать лучше это для всех продуктов JetBrains
Meklon
28.11.2016 22:20Логически для конечного пользователя напрашиваются две ветки репозиториев — Community и Commercial. Я просто не знаю, сколько у вас пользователей именно на *nix сидят.
640509-040147
А поддержка синтаксиса kivy из коробки будет? А то представленный на сайте jar модуль уже слегка устарел, и много чего не знает.
dmitryfilippov
Пока не планировалось, но люди просят. Проголосуйте здесь пожалуйста https://youtrack.jetbrains.com/issue/PY-8238.