2

在导入库时(我相信处理它的引擎是 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

4

0 回答 0