Всем привет! Вчера мы выпустили новый PyCharm 2016.3, который уже доступен для скачивания.
Этот релиз является последним крупным обновлением с новой функциональностью в 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)


  1. 640509-040147
    24.11.2016 19:15

    А поддержка синтаксиса kivy из коробки будет? А то представленный на сайте jar модуль уже слегка устарел, и много чего не знает.


    1. dmitryfilippov
      24.11.2016 19:51

      Пока не планировалось, но люди просят. Проголосуйте здесь пожалуйста https://youtrack.jetbrains.com/issue/PY-8238.


  1. sergsh
    24.11.2016 19:51
    +1

    Есть ли по Pycharm подробный мануал на русском языке, для новичков в Python? Или это может быть только для коммерческой версии?


    1. dmitryfilippov
      24.11.2016 19:52
      +2

      К сожалению документации, гайдов или туториалов на русском нет и не планируется.


    1. DjoNIK
      25.11.2016 12:34

      Уж не знаю, покроет ли ваши потребности PyCharm Edu/.
      Там, правда, все в куче и Python, и по самой среде.


    1. Radist_101
      25.11.2016 15:02

      Можете посмотреть видео на русском https://www.youtube.com/watch?v=DpscmxH2LQU


  1. mezastel
    24.11.2016 20:16

    Какова ситуация с notebooks на high-DPI?


    1. dmitryfilippov
      24.11.2016 21:37

      Никаких улучшений в этом направлении пока не было. Но мы планируем серьезнее заняться Notebook.


  1. alexey-m-ukolov
    24.11.2016 20:21

    Я не питонист, поэтому задам, возможно, глупый вопрос: а почему не реализовали семантическую подсветку? Она не актуальна в Питоне или, может, реализовали, но не упомянули в анонсе?


    1. antonksa
      24.11.2016 21:31

      Вы о чем?!


      1. dmitryfilippov
        24.11.2016 21:39
        +1

        Кажется об этой фиче https://www.youtube.com/watch?v=8WRH59PQ5Dk


    1. dmitryfilippov
      24.11.2016 21:41

      Мы ее не реализовали в этом релизе. На сколько мне известно, пока семантическая подсветка есть только в IntelliJ IDEA 2016.3, и то не по умолчанию. Возможно мы включим эту функциональность в следующем релизе. В любом случае кое что нужно доработать.


      1. alexey-m-ukolov
        25.11.2016 07:27

        Ещё она есть в CLion 2016.3. Собственно, я потому и заинтересовался, что PyCharm — первый продукт анонсируемый на этой неделе, в котором про неё не сказали. Вот и задумался — это в Питоне что-то особенное или какие-то другие причины.


        1. PQR
          25.11.2016 14:54

          Семантическая подсветка также есть и в свежем PhpStorm 2016.3.
          Похоже, команда PyCharm отстала от коллег из соседних отделов.


      1. baldrs
        25.11.2016 15:02

        Еще в PHPStorm 2016.3 она есть


  1. Grief
    24.11.2016 20:40

    Не злорадства ради, но может ли быть полная поддержка 3.6 без 3.5?
    Синтаксический анализатор до сих пор не понимает простую конструкцию


    for i in range(10): self.assertEquals(i * 2, await self.x(i))

    https://youtrack.jetbrains.com/issue/PY-20682


    1. el777
      24.11.2016 22:06

      В 2016.3 (даже CE) уже выглядит нормально.
      Что понравилось — подсветка ключевых слов и сообщения об ошибках синтаксиса зависят от выбранной версии интерпретатора.


      1. erdbeeranke
        28.11.2016 17:28

        оффтопика ради, что за тема?


        1. dmitryfilippov
          28.11.2016 17:28

          кажется Monokai


        1. el777
          28.11.2016 18:25

          Monokai
          хотя иногда (при лампах дневного света) в ней хочется посветлее фон.
          А для обычных накаливания — норм.


    1. dmitryfilippov
      24.11.2016 22:24

      Спасибо! Постараемся как можно быстрее пофиксить.


  1. tbicr
    24.11.2016 23:17
    +1

    Когда уже можно будет обновиться через apt, а не скачивать архив с сайта?


    1. kozzztik
      24.11.2016 23:28

      У меня EAP автоматически обновляется сам.


    1. Djaler
      25.11.2016 16:06

      Абсолютно поддерживаю. В 2016 устанавливать программы распаковкой архивов как-то вообще не торт.


    1. Sirikid
      26.11.2016 03:52

      Неужели для вашего дистрибутива нету репозитория с тем же самым архивом внутри deb-а?


    1. Infernion
      28.11.2016 17:28

      Не знаю как там сейчас в Ubuntu но в Arch все можно установить с репозитория:

      yaourt -S pycharm-professional
      


    1. dmitryfilippov
      28.11.2016 17:30
      +1

      Мы сейчас как раз обсуждаем как это реализовать. Будем делать для всех продуктов единообразно.


  1. funca
    25.11.2016 00:28

    Проект на Django, тесты на py.test. В настройках PyCharm выбран py.test в качестве тестового фреймворка.
    Если в настройках включить так же поддержку Django, то PyCharm начинает запускать тесты через свой аналог manage.py test, вместо py.test. Хотелось бы, чтобы поддержка Django не меняла способ запуска тестов.


    1. dmitryfilippov
      25.11.2016 16:29

      На самом деле это так by design. Если необходимо запускать не Django тесты, то можно создать дополнительную run configuration. Оригинальный issue с комментариями https://youtrack.jetbrains.com/issue/PY-19727


      1. funca
        28.11.2016 22:24

        Ничего не смыслю в дизайне. Наверняка, дизайнеры старались сделать как лучше. Однако, пользоваться будет гораздо удобнее, если появится возможность эту фичу отключить. Plsss… :)


  1. Meklon
    25.11.2016 01:29
    +6

    Хотел сказать огромное спасибо за ваш продукт) В том числе благодаря ему мы двигаем науку понемногу. Обычно вперед) Хотя, конечно, работаю с Community edition. Денег на ПО у нас очень редко выделяют. Впрочем, это не мешает пользоваться им с удовольствием.


    1. dmitryfilippov
      25.11.2016 16:29

      Спасибо за отзыв!


  1. Terras
    25.11.2016 01:51

    Вопрос:

    Когда заканчивается лицензия — он продолжает работать (но обновления не поступают), либо он переходит в режим фрии версии?


    1. tumbler
      25.11.2016 15:53

      Продолжает работать без обновлений.


    1. dmitryfilippov
      25.11.2016 16:26

      Если на старой лицензионной модели (лицензия куплена до 2 ноября 2015) то вы просто не получаете обновления а продолжаете пользоваться последней версией на момент истечения срока лицензии.
      С новой подписочной можелью немного сложнее. По истечении подписки, если не продлевать, то придется откатиться на версию, которая была во время покупки (т.е. лишиться всех обновлений за время подписки).


  1. Boggard
    25.11.2016 08:21

    консоль в версии под mac os сломали ( раньше подхватывались все переменные окружения текущего пользователя, а сейчас тупо bash грузится и все…


    1. dmitryfilippov
      25.11.2016 16:30

      Спасибо! Мы планируем пофиксить это в ближайшем баг апдейте. https://youtrack.jetbrains.com/issue/IDEA-164435


  1. ef_end_y
    25.11.2016 11:11
    -5

    Продукт, конечно, прекрасный, но уверен, если бы вы установили меньшую цену, то покупок было бы на порядок больше. Знаю много людей, которые не могут психологически принять такую цену, но готовы в принципе платить. Я сам разработчик и почти 10 лет продаю биллинг, так вот крупные компании просто не понимаю за что они должны платить такие деньги (на самом деле небольшие, меньше одной зп специалиста) и фиг им объяснишь, что твой продукт окупится в тысячу раз. Пришлось снизить цены, покупают. Тоже с pycharm — возможно он стоит таких денег, ну не могут пока психологически наши прогеры принять такие цены.


    1. moscas
      25.11.2016 11:36
      +2

      Для решения таких проблем есть помесячная подписка :)


      1. ef_end_y
        25.11.2016 12:22

        Каждый месяц покупать подписку будет дешевле?


    1. ef_end_y
      25.11.2016 12:21
      -1

      В момент написания был уверен, что будут минусы. Хабравчане не склонны к диалогу, жаль


    1. s_suhanov
      25.11.2016 15:26
      +1

      9 долларов в месяц весь первый год.
      Второй год — скидка 20%.
      Третий год — скидка 40%.


      Куда уже меньше? :)


      1. alexey-m-ukolov
        25.11.2016 16:16

        Справедливости ради, подписка для организаций в два раза дороже. А разработчики не все готовы тратить личные деньги.
        Но мне тоже не кажется, что подписка сейчас дорогая.


    1. 93kostya93
      25.11.2016 16:30
      +2

      Минусуют, кмк, потому, что наверняка в JB есть ни один человек (скорее даже отдел), который занимается тем, что анализирует различного рода данные (по продажам и прочей активности, связанной с продуктами JB и вообще с миром IT), у которого, в частности, стоит задача поиска оптимально стратегии продаж (цена (возможно в зависимости от региона), подписка или единоразовый платеж и т.д.). И вероятность того, что существует такой человек со стороны, который не имея подобной информации может в двух предложениях может описать действия, который нужно произвести компании для того, чтобы увеличить прибыль, крайне мала. А вы претендуете на подобное.


      1. ef_end_y
        25.11.2016 16:43

        Если так, то прекрасно. Хотя, зная как маркетологи из-за сиюминутной выгоды убивают бизнес, предположил, что здесь может быть такая же ситуация


        1. Regis
          27.11.2016 14:38

          Эм, вы вообще в курсе как цена на продукты JB исторически менялась? Или сколько стоят/стоили продукты близкого уровня от конкурентов? Я бы сказал, что у JB сейчас очень и очень низкие цены.


    1. Regis
      27.11.2016 14:36

      если бы вы установили меньшую цену, то покупок было бы на порядок больше
      Откуда такая уверенность? Мне, например, кажется, что даже если цену уменьшить в 2 раза, то покупателей в два раза больше не станет.


  1. iroln
    25.11.2016 11:21

    Теперь экспериментировать и писать код в консоли стало намного удобнее и визуально приятнее. В дополнение ко многим небольшим улучшениям Python консоли, мы добавили автодополнение для IPython по нажатии Tab.

    Это, конечно, хорошо, но когда же вы обратите внимание вот на это?
    https://youtrack.jetbrains.com/issue/PY-10985


    3 года уже висит! И экспериментировать в консоли без быстрого автодополнения из истории ну совсем не приятно!


  1. killla
    25.11.2016 17:20

    Для тех кто уже не студент. На stepik.org при обучении на IT-шных курсах можно получить образовательную лицензию PyCharm (и не только) на 3 месяца. С возможностью продления.


  1. Yahweh
    25.11.2016 19:28

    Забагованный релиз какой-то. С чем уже столкнулся:


    • один раз завис
    • Reformat Code (Ctrl+Alt+R) не работает в html документе (по крайней мере с django-шаблонизатором), но в некоторых файлах работает (в том числе с шаблонизатором)
    • В дополнение к предыдущему: пишу в html — block, нажимаю Tab, чтобы "раскрыть" его — получаю:

      при этом курсор стоит не внутри block, а перед открывающейся фигурной скобкой {%



    1. dmitryfilippov
      28.11.2016 16:58

      Это очень странное повдение. Могу я вас попросить зарепортить это к нам в трекер? https://youtrack.jetbrains.com/issues/PY Очень помогут логи (Help | Find logs in files).
      В settings | Languages & Frameworks | Python Template Languages что стоит?


      1. Yahweh
        28.11.2016 17:08

        html, xhtml, xml
        С шаблонами вообще все плохо стало: раньше можно было сразу в файл стилей или js-скрипт перейти с помощью gd (VimIdea использую, не помню аналог команды в ide), а теперь не работает, py файлах норм


      1. Yahweh
        29.11.2016 12:30

        Полагаю я нашел "виновника" — это либа django-environ, если ее не использовать, все нормально работает. Видимо pycharm не понимает где искать файлы и тд


        При этом в pycharm 2016.2 все нормально работало и с django-environ.
        Позже зарепортю вам в трекер.


        1. dmitryfilippov
          29.11.2016 12:36

          Спасибо!


  1. ErhoSen
    26.11.2016 17:30

    dmitryfilippov Спасибо за постоянные улучшения моего любимого продукта!
    Есть одна проблема, которая не даёт мне спать по ночам. А именно, автоматическая генерация Docstrings из аргументов функции. Мы в своём проекте используем PyContracts, как библиотеку проверки типов. У неё слегка отличающийся синтаксис аннотаций, который вы из-коробки не поддерживаете.
    Возможно ли будет когда-нибудь описать свой стиль аннотаций?

    Дефолтный ReStructuredText
    Результат Insert documentation string stub


    1. dmitryfilippov
      28.11.2016 17:09

      PyCharm поддерживает несколько форматов docstrings.
      В settings | tools | Python Integrated Tools есть раздел Docstrings format.
      Кроме restructured text поддерживаются Epytext, numpy, google…
      Кажется PyContracts использует свой формат отличающийся от всех поддерживаемых… Тем не менее, я рекомендую завести feature request https://youtrack.jetbrains.com/issues/PY


  1. Djaler
    28.11.2016 00:41

    dmitryfilippov, что насчёт автодополнения для PyQt?


    1. dmitryfilippov
      28.11.2016 17:14

      Оно должно работать. Что именно не автодополняется?
      Лучше всего описать проблему или запрос прямо в трекере https://youtrack.jetbrains.com/issues/PY?q=pyqt


      1. Djaler
        28.11.2016 18:08

        https://youtrack.jetbrains.com/issue/PY-14484#u=1416515940251
        Действительно, это проявляется только внутри virtualenv.


        1. Djaler
          28.11.2016 18:25

          И ещё https://youtrack.jetbrains.com/issue/PY-12498, независимо от окружения.


  1. Meklon
    28.11.2016 13:27

    dmitryfilippov Кстати, а как корректно tar.gz версию для Linux обновлять? Там sh-скрипт, насколько я понимаю. Uninstall предыдущей версии как корректнее сделать?


    1. dmitryfilippov
      28.11.2016 17:12

      Корректно распаковать tar.gz рядом с предыдущей версией (отдельно)… запустить, импортировать настройки и проверить что все работает. После этог опможно просто удалить папку с предыдущей версией.


      1. Meklon
        28.11.2016 17:32

        Спасибо. Под kde пришлось руками kdeinit править в файле .desktop. deb-файл и репозиторий был бы уместнее. Но это, конечно, вопрос ваших приоритетов в разработке. Просто отвык что-то руками мимо пакетного менеджера делать.


        1. dmitryfilippov
          28.11.2016 18:03

          Согласен. Устанвливать распаковкой архива и руками добавлять десктопный лаунчер не самое удобное занятие. Мы сейчас обсуждаем как сделать лучше это для всех продуктов JetBrains


          1. Meklon
            28.11.2016 22:20

            Логически для конечного пользователя напрашиваются две ветки репозиториев — Community и Commercial. Я просто не знаю, сколько у вас пользователей именно на *nix сидят.