Python已安装Google模块仍报ModuleNotFoundError错误排查
问题原因
- 第一个核心问题是Python模块导入严格区分大小写,你通过pip安装的
Google包,在site-packages下生成的顶层模块目录是全小写的google,你代码里写大写开头的from Google import Create_Service,按照导入规则会直接判定模块不存在,和路径配置没有关系。 - 第二个问题是你装错包了。PyPI源里名为
Google的包是2013年就停止维护的网页爬虫工具,依赖beautifulsoup4做解析,和你要调用的谷歌服务API没有任何关系。你代码里用到的Create_Service不是这个公开包的导出方法,是各类谷歌API接入教程里作者自定义封装的工具函数,本身需要作为本地文件放在项目目录里,不存在于第三方pip包中。 - 你虽然校验了sys.path包含虚拟环境的site-packages路径,但没有排除「包名大小写不匹配」「装的包根本不含目标方法」这两个更高发的问题,所以推导的“理论上可导入”的前提不成立。
解决方案
按顺序操作即可修复:
- 先验证模块名大小写问题,执行以下命令查看虚拟环境里实际安装的谷歌相关模块目录名:
执行后可看到返回的目录名是全小写的ls /Users/sebastianstros/Library/Caches/pypoetry/virtualenvs/mama-bots-9Qh4WGwv-py3.9/lib/python3.9/site-packages | grep -i googlegoogle,如果只是大小写问题,把导入语句改成from google import Create_Service即可,但大概率执行这步后会报「无法从google模块导入Create_Service」的错误,这就能验证装错包的判断。 - 卸载错误安装的废弃包,避免后续模块名冲突:
poetry run pip uninstall -y Google - 安装谷歌官方API相关的正确依赖:
poetry add google-api-python-client google-auth-httplib2 google-auth-oauthlib - 找到你参考教程里提供的、内部实现了
Create_Service函数的Google.py文件,把它放到项目Python搜索路径可覆盖的位置(比如和你运行的personal_calendar_bot.py文件同层级,或者项目根目录),再执行导入就不会报错。 - 最后做解释器一致性校验,在代码开头加两行打印,确认运行代码的解释器就是你poetry虚拟环境的解释器,避免出现装包在虚拟环境、运行时调用系统Python的环境错位问题:
打印出的路径需要匹配你的poetry虚拟环境下的python可执行文件路径。import sys print(sys.executable)
内容的提问来源于stack exchange,提问作者Sebinda
相关产品推荐
相关产品推荐

