在导入库时(我相信处理它的引擎是 IntelliSense 但不完全是)当然)。
我在导入串行时首先遇到了这个问题,并且可以手动调用正确的模块但不使用条件。尽管此问题已在包含条件导入的其他库中复制。
我正在使用从 Anaconda 安装的 Python 3.7 和 VS Code 中的 Microsoft Python 扩展。我的系统路径指向 Anaconda 文件夹和库,并且导入在查找请求的文件时没有任何问题。
我获得的自动完成结果取决于我是否启用了绝地作为 IntelliSense 引擎或 Microsoft Python 分析引擎。
#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 中编写代码,则会正确解析导入路径。我检查以确保它不仅仅是我的电脑,而且我在实验室的 mac 上也遇到了同样的问题。
串行库的 __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))
环境:带有 Microsoft Python 扩展的 VS Code
操作系统:Windows 10 和 macOS 10
后端:来自 Anaconda 的 Python 3.7 安装
导入库:pyserial