Я пытался и не смог получить автозаполнение для правильной обработки условного импорта (то есть: импортирует ОС и использует проверку / elif / else для импорта библиотеки, зависящей от ОС) при импорте библиотеки (я полагаю, что механизм, который обрабатывает ее, это IntelliSenseно не совсем уверен).
Впервые я столкнулся с проблемой при импорте серийного номера и могу вызвать правильный модуль вручную, но без использования условного выражения. Хотя эта проблема была повторена в других библиотеках, которые содержат условный импорт.
Я использую установленный Python 3.7 от Anaconda и расширение Microsoft Python в VS Code. Мои системные пути указывают на папку и библиотеки Anaconda, и при импорте не возникает проблем с поиском запрошенных файлов.
Результаты, которые я получаю для автоматического завершения, зависят от того, включен ли у меня Jedi в качестве механизма IntelliSense или MicrosoftPython Analysis Engine.
#Microsoft Python Analysis Engine
import serial
serial.Serial()
#Dose reference module but incorrect one: serialjava.py for the Serial() function
#Setting > Python > Jedi Enabled (as IntelliSense engine)
import serial
serial.Serial() #not found
serial.serialwin32.Serial() #dose find function if use path to os dependent module
Если я напишу код в Spyder или Jupiter, пути импорта будут правильно проанализированы. Я проверил, чтобы убедиться, что это был не только мой компьютер, и у меня возникла та же проблема на компьютерах Лаборатории.
Библиотека __init__.py последовательной библиотеки (только раздел условной проверки):
if sys.platform == 'cli':
from serial.serialcli import Serial
else:
import os
# chose an implementation, depending on os
if os.name == 'nt': # sys.platform == 'win32':
from serial.serialwin32 import Serial
elif os.name == 'posix':
from serial.serialposix import Serial, PosixPollSerial, VTIMESerial # noqa
elif os.name == 'java':
from serial.serialjava import Serial
else:
raise ImportError("Sorry: no implementation for your platform ('{}') available".format(os.name))
Среда: VS Code с расширением Microsoft Python
ОС: Windows 10 и macOS 10
Серверная часть: Python 3.7 от Anaconda установить
Импортированная библиотека: pyserial