Автоматический импорт 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 выглядит так:

My Auto Import fsetting

Настройка завершения кода не имеет раздела Python, но общая область настроена следующим образом:

Code Completion setting

Настройка проекта кажется правильной и имеет модуль django:

enter image description here

enter image description here

а это мой .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="&lt;map/&gt;" />
        <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', чтобы всплывающая подсказка автозаполнения показала предложения.

Полную версию обсуждения вы можете прочитать здесь:

https://intellij-support.jetbrains.com/hc/en-us/community/posts/360007264739-python-autocomplete-not-working?page=1#community_comment_6656007978642

Вернуться на верх