为什么pynput.mouse.Controller的导入方式会影响程序正常运行?
为什么两种pynput导入写法效果不同
核心原因是Python中import和from ... import ...两种语法的适用规则不一样,同时和pynput库的内部结构有关:
- Python的
import关键字后只能跟包(package)或者模块(module),不能直接跟模块内定义的类、函数、变量等成员 - 而
from 包/模块 import ...的写法中,import后面既可以跟子包、子模块,也可以跟对应模块内的任意成员
你用到的Controller是pynput.mouse模块内部定义的类,本身不是独立的模块/包:
from pynput.mouse import Controller写法完全符合规则:从pynput.mouse模块中导入它的成员类Controller,所以可以正常运行import pynput.mouse.Controller写法是要求Python导入名为pynput.mouse.Controller的模块,但这个路径对应的是类不是模块,自然找不到对应模块,就会抛出ModuleNotFoundError: No module named 'pynput.mouse.Controller'错误
如果你不想用from ... import的写法,也可以按如下方式导入使用:
import pynput.mouse # 调用时写全路径即可 mouse_controller = pynput.mouse.Controller()
内容的提问来源于stack exchange,提问作者Geneku2
相关产品推荐
相关产品推荐

