Как использовать консоль shell_plus (iPython) в PyCharm?

Я учусь разрабатывать в Django и использую PyCharm в своем проекте, и я хотел бы использовать в нем консоль iPython.

iPython запускается, проблема не в этом.

Проблема в том, что когда я запускаю iPython из консоли, импортируются все мои модели и другие классы утилит.

Вот что происходит, когда я запускаю команду python3 manage.py shell_plus:

# Shell Plus Model Imports
from app.models.models import Model1, Model2, Model3
from django.contrib.admin.models import LogEntry
from django.contrib.auth.models import Group, Permission, User
from django.contrib.contenttypes.models import ContentType
from django.contrib.sessions.models import Session
# Shell Plus Django Imports
from django.core.cache import cache
from django.conf import settings
from django.contrib.auth import get_user_model
from django.db import transaction
from django.db.models import Avg, Case, Count, F, Max, Min, Prefetch, Q, Sum, When, Exists, OuterRef, Subquery
from django.utils import timezone
from django.urls import reverse
/myproject/env/lib/python3.7/site-packages/IPython/core/history.py:226: UserWarning: IPython History requires SQLite, your history will not be saved
  warn("IPython History requires SQLite, your history will not be saved")
Python 3.7.4 (default, Jul 23 2019, 18:02:54) 
Type 'copyright', 'credits' or 'license' for more information
IPython 7.13.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: 

Между тем, когда я запускаю консоль Python в PyCharm, импорт не выполняется, и мне приходится вручную импортировать все свои модели. Вот что происходит в консоли PyCharm Python:

/home/user/myproject/env/bin/python /snap/pycharm-community/188/plugins/python-ce/helpers/pydev/pydevconsole.py --mode=client --port=33543
/home/user/myproject/env/lib/python3.7/site-packages/IPython/core/history.py:226: UserWarning: IPython History requires SQLite, your history will not be saved
  warn("IPython History requires SQLite, your history will not be saved")
import sys, django
print('Python %s on %s' % (sys.version, sys.platform))
Python 3.7.4 (default, Jul 23 2019, 18:02:54) 
Type 'copyright', 'credits' or 'license' for more information
In[2]:

Очевидно, что команда выполняется в команде shell_plus, которой нет в консоли PyCharm.

А вот используемые версии.

Ubuntu = 18.04 LTS
python = 3.7.4
iPython = 7.13.0
Django = 3.0.5
PyCharm = 2019.3.4 Community

Спасибо за вашу помощь, вы можете мне помочь.


person Bravo2bad    schedule 08.04.2020    source источник


Ответы (2)


вы можете запускать пользовательские команды django на pycharm, используя Ctrl + ALT + R или меню Tools -> Run manage.py tasks

person Umar    schedule 08.04.2020
comment
У меня нет этой опции в PyCharm 2019.3.4. Вы также знаете, какой скрипт я должен использовать для вызова shell_plus? Спасибо за вашу помощь в любом случае. - person Bravo2bad; 09.04.2020
comment
вы используете версию сообщества или профессиональную версию? так как эта опция доступна только в профессиональной версии. извините, забыл упомянуть об этом раньше - person Umar; 09.04.2020
comment
Версия сообщества. Да, прости. Я забыл, что это две версии IDE. Итак, есть ли другой способ использовать оболочку iPython в консоли Python? - person Bravo2bad; 09.04.2020
comment
Извините, я не знаю - person Umar; 09.04.2020
comment
Спасибо за попытку в любом случае. - person Bravo2bad; 11.04.2020

Я нашел это в Интернете и хорошо работает (с автоперезагрузкой)

???? ПРИМЕЧАНИЕ. Это работает, только если вы делаете вид, что используете функцию Django Console в Pycharm.

Вставьте коды ниже в Build, Execution, Deployment > Console > Django Console > Starting Script

# requirements: `django_extensions`, `IPython`
import sys
import django

from IPython.core.getipython import get_ipython
from django_extensions.management.notebook_extension import load_ipython_extension

print('Python %s on %s' % (sys.version, sys.platform))
print('Django %s' % django.get_version())

sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])
if 'setup' in dir(django):
    django.setup()
ipython = get_ipython()
load_ipython_extension(ipython)

# NOTE: If you don't use the autoreload feature, don't paste the three lines below
load_ipython_extension(ipython)
ipython.extension_manager.load_extension('autoreload')
ipython.magics_manager.registry['AutoreloadMagics'].autoreload('2') 
person EsseTi    schedule 29.12.2020