Ответ 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
и изменять файлы там (хотя я никогда не мог получить его, чтобы обнаружить мои изменения)