我曾经使用以下 app.yaml 为我的谷歌应用程序引擎 python 项目进行设置:
runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app
runtime_config:
python_version: 3
resources:
cpu: 1
memory_gb: 2.3
disk_size_gb: 10
volumes:
- name: ramdisk1
volume_type: tmpfs
size_gb: 0.5
manual_scaling:
instances: 1
还有一个requirements.txt,如下所示:
Flask==0.12.2
gunicorn==19.7.1
numpy==1.8.0
scipy==1.5.3
mysql-connector-python==8.0.23
但是 Google 做到了这一点,因此您不能再使用 python 版本 3 进行部署,现在 app.yaml 文件必须如下所示或类似的内容:
runtime_config:
operating_system: "ubuntu22"
runtime_version: "3.12"
这使得我的requirements.txt不起作用,我不断更改它,我的最新版本是这样的:
Flask==2.0.3
gunicorn==22.0.0
numpy==2.1.1
scipy==1.14.0
mysql-connector-python==9.0.0
Jinja2==3.1.1
MarkupSafe==2.1.1
Werkzeug==2.0.3
无论我对这些库进行了多少更改或更改了哪些版本,我总是会遇到某种错误,无论是gunicorn、flask、Werkzeug还是Jinja2。
这个最新版本在尝试使用 gcloud app deploy 进行部署时出现错误:ImportError: 无法从 'jinja2' 导入名称 'Markup' (/layers/google.python.pip/pip/lib/python3.11/site-packages /jinja2/init.py)。我还使用 Python 3.10 而不是 3.12,因为它似乎会给我带来更多错误。
如果有人能给我一个与gunicorn和Flask一起使用的requirements.txt,并且带有仍然可以部署的python版本,我将非常感激。
我的同事最终发现,我们使用 python 版本 3.11 和以下requirements.txt 文件:
Flask==2.1.3
Werkzeug==2.3.7
gunicorn==22.0.0
numpy==2.1.1
scipy==1.14.0
mysql-connector-python==9.0.0