Использовать ipython для выполнения REAL-кода в pycharm

Многие IDE для python могут обеспечить завершение кода (понимание кода), PyCharm - одна из этих IDE. Однако мне кажется, что предоставленное завершение кода крайне ограничено. Позвольте мне привести вам пример, чтобы дать понять:

import numpy as np
m = np.random.random((3,5))
m.

Нажмите CTRL-пространство после "м". не даст мне никакого завершения кода, независимо от того, насколько сильно я его ударил;).. Я предполагаю, что это связано с тем, что IDE пришлось бы делать вывод типа, чтобы узнать тип переменной "m", и что это isn ' t тривиально в области языков динамического программирования.

Теперь PyCharm поставляется с настройкой под названием "Сбор информации о времени выполнения для анализа кода", что действительно звучит многообещающе. Однако, похоже, проблема не устранена выше. Я все еще не могу получить завершение кода переменной 'm'.

До сих пор я нашел только один способ получить завершение кода для переменных в PyCharm:

import numpy as np
m = np.random.random((3,5))
''':type : np.matrix'''
m.

В этом примере я могу получить завершение кода при нажатии CTRL-пробела после "m.", и это связано с тем, что я помогаю IDE, указав тип переменной с docstring. Я, однако, не удовлетворен таким способом получения кода-завершения, потому что он добавляет ненужную многословность коду со всеми этими docstrings (не говоря уже о дополнительной клавиатуре)...

IPython на помощь.. (может быть?)

Теперь, если мы запустим IPython в linux-терминале и введем первый фрагмент кода, мы сможем полностью завершить выполнение кода, даже для переменной "m". (где завершение кода в IPython достигается нажатием TAB вместо CTRL-пространства).

У меня нет большого опыта работы с IPython, но я считаю, что слышал что-то о том, что IPython постоянно выполняет код в цикле или что-то в этом роде...

Я думаю, что должно быть возможно использовать IPython для достижения REAL-завершения кода для всех переменных в редакторе PyCharm....

Есть ли способ настроить PyCharm для использования IPython для завершения кода?

Обратите внимание, что я не доволен отправкой кода в окно терминала/консоль или что-то в этом роде, я хочу, чтобы завершение кода внутри редактора PyCharm...

Я рассмотрел такие вопросы, как Добавление ipython в качестве интерпретатора в Pycharm Ubuntu, но, похоже, это касается использования IPython в консоли, - не в редакторе... Есть также много вопросов о завершении кода в IDE, но все они, похоже, имеют тот же неудовлетворительный уровень завершения кода, что и PyCharm...

Моя настройка

  • ОС: тестирование Debian
  • python: Python3 и IPython3
  • IDE: профессиональная версия Pycharm 3.0.2

Ответ 1

У меня был тот же вопрос, я нашел ответ здесь: https://www.jetbrains.com/pycharm/help/using-ipython-notebook-with-pycharm.html

Что вам нужно сделать, так это создать ноутбук ipython в окне инструмента проекта. Это файл с расширением ".ipynb". Щелкните правой кнопкой мыши каталог, в который вы хотите поместить файл, выберите "Создать → Файл", введите имя файла в диалоговом окне и укажите расширение файла .ipynb. Откройте файл записной книжки, и когда вы начнете вводить что-то в окне, выпадающее окно появляется с объектами в пространстве имен плюс любые команды, начинающиеся с уже введенных букв.

Ответ 2

Он не может сказать, что возвращает из функций (с фактическим запуском script, поэтому ipython знает, что это такое (он фактически запускает код и получает обратно объект, который он может интроспектировать)

если вы хотите завершить код без фактического выполнения script до того места, где вы вводите текст, вам нужно сделать дополнительный шаг

import numpy as np
m = np.random.random((3,5))
assert isinstance(m,np.ndarray)
m. #now you get code completion (since the IDE now knows the class of m, without having to execute your script)

Ответ 3

Чтобы реализовать iPython как функциональность в pycharm, вы можете сделать это двумя способами:

  • настроить точку останова и отладить ваш код. когда он достигнет точки останова, перейдите на вкладку консоли прямо под редактором и запустите командную строку, нажав кнопку, которая гласит показать командную строку

  • Запустите командную строку python с консоли (без запуска отладчика), нажав "Сервис", "Запустить консоль Python"