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

Python3环境下非GAE项目执行Django/pip操作出现Google App Engine报错

解决Python3环境下GAE distutils导致的SyntaxError问题

这个问题我之前也碰到过!根源是Google Cloud SDK里附带的Google App Engine(GAE)旧版distutils模块是基于Python2开发的,而你的Python3环境的PYTHONPATH优先加载了这个旧模块,导致出现SyntaxError: invalid syntax——因为Python3不支持raise DistutilsOptionError, \这种Python2风格的语法。

下面是几种可行的解决办法:

临时快速解决(单次生效)

直接在运行pip命令时指定优先加载标准库的distutils路径,比如:

PYTHONPATH=/usr/lib/python3.5/distutils pip3 freeze

注意:如果你的Python3版本不是3.5,或者标准distutils路径不同,可以先用这个命令确认正确路径:

python3 -c "import distutils; print(distutils.__file__)"

把输出的路径(去掉/__init__.py部分)替换到上面的命令里即可。

永久修复(全局生效)

调整环境变量,让标准Python3的distutils路径始终排在GAE路径前面:

  1. 打开你的shell配置文件(比如~/.bashrc、~/.zshrc,取决于你用的终端)
  2. 添加以下内容(替换路径为你刚才确认的标准distutils路径):
# 修复GAE distutils干扰Python3的问题
export PYTHONPATH="/usr/lib/python3.5/distutils:$PYTHONPATH"
  1. 保存文件后,运行source ~/.bashrc(对应你的配置文件)让修改立即生效。

隔离环境(推荐长期方案)

使用Python虚拟环境(venv),虚拟环境的依赖是独立的,不会受到系统中GAE模块的干扰:

# 创建虚拟环境
python3 -m venv my_project_env
# 激活虚拟环境
source my_project_env/bin/activate
# 现在在这个环境里运行pip3 freeze、安装模块都不会有问题了

当你不需要虚拟环境时,运行deactivate即可退出。

极端方案(如果不需要GAE)

如果你完全不用Google App Engine,可以直接卸载Google Cloud SDK里的GAE组件,或者卸载整个SDK,彻底消除干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 07:16:06