如何解决dev_appserver.py 说未知的运行时“python38”
我正在尝试将几个 python 项目的 GAE 运行时从 python37 升级到 python38。 在部署之前,我已经使用 dev_appserver.py 在本地测试应用程序,但是在将运行时更改为 python38 后我收到了一个未知的运行时错误。根据 appengine docs,Python 3.8 应该是受支持的运行时。
我还将所有 gcloud cli 组件更新到最新版本。这只是已被更改/弃用而我只是不知道的东西吗?或者它实际上是一个错误并且在 dev_appserver.py
工具中缺失?
任何帮助将不胜感激! :)
RuntimeError: Unknown runtime 'python38'; supported runtimes are 'custom','go','go111','java','java7','java8','php55','php72','python','python-compat','python27','python37'.
完整回溯:
Traceback (most recent call last):
File "/mnt/c/Users/Admin/AppData/Local/Google/Cloud SDK/google-cloud-sdk/platform/google_appengine/dev_appserver.py",line 96,in <module>
_run_file(__file__,globals())
File "/mnt/c/Users/Admin/AppData/Local/Google/Cloud SDK/google-cloud-sdk/platform/google_appengine/dev_appserver.py",line 90,in _run_file
execfile(_PATHS.script_file(script_name),globals_)
File "/mnt/c/Users/Admin/AppData/Local/Google/Cloud SDK/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py",line 613,in <module>
main()
File "/mnt/c/Users/Admin/AppData/Local/Google/Cloud SDK/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py",line 601,in main
dev_server.start(options)
File "/mnt/c/Users/Admin/AppData/Local/Google/Cloud SDK/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py",line 373,in start
options.api_host,apiserver.port,wsgi_request_info_)
File "/mnt/c/Users/Admin/AppData/Local/Google/Cloud SDK/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/dispatcher.py",line 259,in start
ssl_port)
File "/mnt/c/Users/Admin/AppData/Local/Google/Cloud SDK/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/dispatcher.py",line 396,in _create_module
ssl_port=ssl_port)
File "/mnt/c/Users/Admin/AppData/Local/Google/Cloud SDK/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/module.py",line 1313,in __init__
super(AutoScalingModule,self).__init__(**kwargs)
File "/mnt/c/Users/Admin/AppData/Local/Google/Cloud SDK/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/module.py",line 599,in __init__
self._module_configuration)
File "/mnt/c/Users/Admin/AppData/Local/Google/Cloud SDK/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/module.py",line 226,in _create_instance_factory
sorted(repr(k) for k in runtime_factories.FACTORIES))))
RuntimeError: Unknown runtime 'python38'; supported runtimes are 'custom','python37'.
解决方法
更新:也适用于 python39 运行时!
我找到了一个黑客的解决方法!
我找到并编辑了位于 gcloud devappserver2 工具目录中的 runtime_factories.py 文件。在我的 Ubuntu 18.04 安装中,它位于此处:
/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/runtime_factories.py
我像这样将 python38
添加到 MODERN_RUNTIMES
和 FACTORIES
中:
MODERN_RUNTIMES = set(['python38','python37','go111'])
FACTORIES = {
'go': go_factory.GoRuntimeInstanceFactory,'go111': go_factory.GoRuntimeInstanceFactory,'php55': php_factory.PHPRuntimeInstanceFactory,'php72': php_factory.PHPRuntimeInstanceFactory,'python': python_factory.PythonRuntimeInstanceFactory,'python38': python_factory.PythonRuntimeInstanceFactory,'python37': python_factory.PythonRuntimeInstanceFactory,'python27': python_factory.PythonRuntimeInstanceFactory,'python-compat': python_factory.PythonRuntimeInstanceFactory,'custom': custom_factory.CustomRuntimeInstanceFactory,}
然后点击保存,再次运行 dev_appserver.py 并且成功了!我还确认它实际上正在运行 python38 运行时!
这意味着 dev_appserver.py 工具支持的运行时列表尚未更新为最新的 python 运行时
...谷歌如果你看到这个请更新这个工具,这样其他人就不必做这个hacky的解决方法了! ?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。