App Engine标准环境调用Google Translate API遇pkg_resources导入错误求助
pkg_resources缺失问题 我之前在使用dev_appserver.py开发App Engine标准环境应用时,也碰到过一模一样的ImportError: No module named pkg_resources错误!这个问题本质上是因为dev_appserver使用的Python环境里缺少了setuptools(pkg_resources是setuptools的核心组件),或者你的依赖包没有安装在dev_appserver对应的环境中。下面是我亲测有效的解决步骤:
先确认dev_appserver关联的Python版本
运行命令:dev_appserver.py --version输出里会显示它使用的Python版本,比如
Python 2.7.18或者Python 3.9.10——这很关键,因为App Engine不同runtime对应不同Python版本,依赖必须装对环境。给对应Python版本安装/升级setuptools
根据上面查到的版本,用对应pip命令安装:- 如果是Python 2:
python2 -m pip install --upgrade setuptools - 如果是Python 3:
python3 -m pip install --upgrade setuptools
安装完成后,
pkg_resources模块就会出现在对应的Python环境里了。- 如果是Python 2:
确保
google-cloud-translate安装在正确环境中
同样用对应版本的pip安装Translate API客户端:- Python 2环境:
python2 -m pip install google-cloud-translate - Python 3环境:
python3 -m pip install google-cloud-translate
别用全局pip随便装,一定要匹配dev_appserver用的Python版本!
- Python 2环境:
检查
app.yaml的runtime配置
打开你的app.yaml,确认runtime字段和你本地开发的Python版本一致:- Python 2.7标准环境:
runtime: python27 api_version: 1 threadsafe: true - Python 3.x标准环境(比如3.9):
runtime: python39
dev_appserver会根据这个配置加载对应的环境,配置错了很容易出现依赖找不到的问题。
- Python 2.7标准环境:
清理缓存并重启dev_appserver
有时候本地缓存会搞事情,删掉项目目录下的.dev_appserver文件夹(如果有的话),如果用了虚拟环境,也可以重新激活一遍。然后重新启动服务:dev_appserver.py app.yaml如果是用虚拟环境的话,还可以强制指定dev_appserver使用虚拟环境的Python解释器:
Windows系统:dev_appserver.py --python_exe=.\venv\Scripts\python.exe app.yamlLinux/macOS系统:
dev_appserver.py --python_exe=./venv/bin/python app.yaml
按照这些步骤操作后,我当时的pkg_resources错误就完全解决了,你可以试试!
内容的提问来源于stack exchange,提问作者Shado_hunter

