Подтвердить что ты не робот

Получение шести и шести модулей для автозаполнения в pycharm

Можно ли получить импорт для шести модулей для работы в pycharm? Я понимаю, что модуль делает некоторые игры с импортом, который смущает pycharm, но надеялся, что существует какой-то способ обхода.

Например, я хотел бы, чтобы следующее правильно работало в pycharm или intellij::

from six.moves import BaseHTTPServer
4b9b3361

Ответ 1

Импорт динамический, поэтому pycharm не может выполнять какой-либо статический анализ кода для определения информации о типе.

Pycharm обходит это для таких языков, как javascript, используя файлы определения статического типа (Settings → Languages ​​and Frameworks → Javascript → Libraries).

Это эквивалент python:  https://www.jetbrains.com/help/pycharm/2016.2/using-python-skeletons.html - параллельный набор файлов python со статическим экспортом, позволяющий статический анализ.

В настоящее время определения скелета, по-видимому, действительно являются доказательством концепции, поскольку они очень разрежены (нет six, и хотя существует модуль django, он почти пуст - нет django.utils.six.moves, который вы могли бы просто скопировать). Вы можете вручную добавить все six.moves экспорт, но это было бы нетривиальным усилием.

Если вы хотите попробовать изменить файлы скелета, на OSX:

cd ~/Library/Preferences/PyCharm2016.2 git clone https://github.com/JetBrains/python-skeletons.git и изменять файлы там (хотя я никогда не мог получить его, чтобы обнаружить мои изменения)