Автоматический импорт IntelliJ IDEA не работает для Python
Я использую IntelliJ IDEA для разработки php и она работает без проблем. Я только что начал заниматься кодированием Django и столкнулся с проблемой, когда автозаполнение не работает для импорта.
Я использую Python 3.9 с Django 4.0.6 и использую pipenv для виртуальной среды.
Я пытаюсь сделать несколько базовых импортов, например, импортировать HttpResponse из django.http. Я ожидаю, что IDE предложит импорт по мере набора текста (как для php), но этого не происходит. Чтобы это сработало, я должен нажать control+space 2 раза, и тогда он покажет предложения (Если я просто нажму 1 раз, он скажет "No suggestions") или я могу набрать все, затем нажать option+return и он предложит импортировать это тогда.
Настройка автоматического импорта для python выглядит так:
Настройка завершения кода не имеет раздела Python, но общая область настроена следующим образом:
Настройка проекта кажется правильной и имеет модуль django:
а это мой .iml файл в папке .idea:
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="FacetManager">
<facet type="django" name="Django">
<configuration>
<option name="rootFolder" value="$MODULE_DIR$" />
<option name="settingsModule" value="django_app/settings.py" />
<option name="manageScript" value="manage.py" />
<option name="environment" value="<map/>" />
<option name="doNotUseTestRunner" value="false" />
<option name="trackFilePattern" value="migrations" />
</configuration>
</facet>
<facet type="Python" name="Python">
<configuration sdkName="Pipenv (social-media)" />
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="Pipenv (social-media) interpreter library" level="application" />
</component>
</module>
Я обсуждал это на форуме поддержки jetbrain и отвечу здесь, если кому-то еще интересно.
Вот что изначально сбило меня с толку: Я использую phpstorm в течение многих лет на своей работе, и для php, как только я требую библиотеку с composer, она мгновенно доступна для автоматического заполнения/импорта, как только я ее набираю. Поэтому я предположил, что такое же поведение должно применяться к другим продуктам Jetbrain по умолчанию.
Оказалось, что это не так, и поведение, которое я описал в вопросе здесь, является тем, как Pycharm или IntelliJ+python ведут себя по дизайну. автозаполнение/импорт работает только для встроенных либ и либ, которые вы импортируете в файл, который вы пишете. например, если у вас есть этот импорт в вашем файле: from django.http import *
, а затем вы набираете HttpRequest
, он предложит его правильно, но если импорта нет, вам придется удерживать клавишу 'Control' и дважды нажать клавишу 'Space', чтобы всплывающая подсказка автозаполнения показала предложения.
Полную версию обсуждения вы можете прочитать здесь: