You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Python 3后Google App Engine dev_appserver报错‘python2: command not found’

解决dev_appserver.py查找Python2的问题

为啥明明用了Python3.7,dev_appserver还找Python2?

早期版本的Google Cloud SDK里,dev_appserver.py本身是基于Python2开发的——哪怕你的app.yaml已经指定了Python3.7作为运行时,只要SDK没更新到支持Python3的版本,它还是会默认调用Python2来启动自己。加上你用的Mac OS X 10.11.6是比较老的系统,默认安装的SDK版本大概率没跟上新的Python兼容要求。

一步步解决问题

1. 先更新Google Cloud SDK到最新版

先看看你当前的SDK版本:

gcloud version

如果版本比较旧,直接执行更新:

gcloud components update

新版本的SDK已经把dev_appserver.py改成支持Python3运行了,更新后应该会自动用你系统里的Python3环境启动。

2. 直接用Python3启动dev_appserver.py

要是更新SDK遇到问题(比如旧系统不兼容新版本),可以绕开默认调用,直接指定Python3来运行脚本:

# 先找到dev_appserver.py的路径
which dev_appserver.py
# 然后用python3运行它
python3 /你找到的路径/dev_appserver.py app.yaml --enable_console

3. 配置环境变量强制SDK用Python3

设置CLOUDSDK_PYTHON环境变量,告诉Google Cloud SDK默认用Python3:

export CLOUDSDK_PYTHON=python3

如果想让这个设置永久生效,把上面这行加到你的~/.bash_profile或者~/.zshrc里(看你平时用的是bash还是zsh),保存后重启终端就行。

4. 修正你的app.yaml配置

你的配置里有个小坑:Python3运行时不需要script字段,而且你已经通过entrypoint指定了gunicorn的启动命令,handlers里的script: main.app会冲突。修改后的配置应该是这样:

application: bones
version: 1
runtime: python37
entrypoint: gunicorn -b :$PORT main:app
api_version: 1
threadsafe: true
handlers:
  - url: /static
    static_dir: static
  - url: /.*
    secure: always
    redirect_http_response_code: 301

(注:Python3环境下的handlers规则和Python2不一样,script字段已经不再适用,全靠entrypoint来指定启动逻辑)

额外提醒

Mac OS X 10.11.6对新版本SDK的兼容性可能有限,如果更新SDK时出错,可以试试找适配旧系统的SDK版本,或者用Python虚拟环境把Python3环境隔离开,避免和系统自带的Python2搞混。

内容的提问来源于stack exchange,提问作者zerowords

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 13:27:30