【问题标题】:Running locally with GAE Python second generation使用 GAE Python 第二代在本地运行
【发布时间】:2019-02-11 23:33:22
【问题描述】:

我多年来一直在使用 GAE/P 第一代,并且正在跳到我的第一个 GAE/P 第二代项目。

我尝试在本地运行它,就像我对第一代应用程序使用 dev_appserver.py 所做的那样,但 the docs 在这方面非常令人困惑。

我可以单独运行 Flask (python main.py),但静态文件不起作用(因为 Flask 对 app.yaml 一无所知)并且数据存储也不起作用。

GAE 文档说 dev_appserver.py 应该适用于第二代(Windows 除外,但我使用的是 Mac),但是当我运行它时,出现以下错误。

当我使用 Python 2 或 3 运行 dev_appserver.py 时会发生这种情况。我还按照说明将 CLOUDSDK_PYTHON 设置为我的 Python 2 二进制文件。

那么我怎么能在本地运行我的 GAE/P 2nd gen 项目以使静态文件和数据存储工作?!?


$ python ~/google-cloud-sdk/bin/dev_appserver.py --application=myapp --support_datastore_emulator=False ./app.yaml 
INFO     2019-02-12 00:39:21,885 devappserver2.py:278] Skipping SDK update check.
INFO     2019-02-12 00:39:23,128 api_server.py:275] Starting API server at: http://localhost:51187
INFO     2019-02-12 00:39:23,139 instance_factory.py:71] Detected Python 3.6.5

INFO     2019-02-12 00:39:24,459 instance_factory.py:205] Using pip to install dependency libraries; pip stdout is redirected to /var/folders/yd/xr84fg0946l72fp_cc6j9l540000gr/T/tmpj3SEUZ
INFO     2019-02-12 00:39:24,459 instance_factory.py:211] Running /var/folders/yd/xr84fg0946l72fp_cc6j9l540000gr/T/tmpLtysT3/bin/pip install --upgrade pip
INFO     2019-02-12 00:39:24,469 stub_util.py:357] Applying all pending transactions and saving the datastore
INFO     2019-02-12 00:39:24,469 stub_util.py:360] Saving search indexes
Traceback (most recent call last):
  File "/.../google-cloud-sdk/platform/google_appengine/dev_appserver.py", line 96, in <module>
    _run_file(__file__, globals())
  File "/.../google-cloud-sdk/platform/google_appengine/dev_appserver.py", line 90, in _run_file
    execfile(_PATHS.script_file(script_name), globals_)
  File "/.../google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 600, in <module>
    main()
  File "/.../google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 588, in main
    dev_server.start(options)
  File "/.../google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py", line 360, in start
    options.api_host, apiserver.port, wsgi_request_info_)
  File "/.../google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/dispatcher.py", line 248, in start
    ssl_port)
  File "/.../google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/dispatcher.py", line 384, in _create_module
    ssl_port=ssl_port)
  File "/.../google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/module.py", line 1309, in __init__
    super(AutoScalingModule, self).__init__(**kwargs)
  File "/.../google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/module.py", line 598, in __init__
    self._module_configuration)
  File "/.../google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/module.py", line 231, in _create_instance_factory
    module_configuration=module_configuration)
  File "/.../google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/instance_factory.py", line 98, in __init__
    self._SetupVirtualenvFromConfiguration()
  File "/.../google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/instance_factory.py", line 143, in _SetupVirtualenvFromConfiguration
    self._venv_dir, requirements_file.name)
  File "/.../google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/instance_factory.py", line 228, in _SetupVirtualenv
    cls._RunPipInstall(venv_dir, requirements_file_name)
  File "/.../google-cloud-sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/instance_factory.py", line 212, in _RunPipInstall
    pip_proc = subprocess.Popen(pip_cmd, stdout=pip_out)
  File "/usr/local/Cellar/python@2/2.7.15/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 394, in __init__
    errread, errwrite)
  File "/usr/local/Cellar/python@2/2.7.15/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 1047, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

【问题讨论】:

标签: google-app-engine google-app-engine-python


【解决方案1】:

睡了一夜好觉,终于解决了问题……

我在我的虚拟环境中运行dev_appserver.py。出于某种原因,这阻止了dev_appserver.py 能够找到pip(需要在我的requirements.txt 中安装软件包)。

在运行dev_appserver.py 之前退出我的虚拟环境解决了这个问题。

【讨论】:

  • 干得好。我仍在使用旧版本,对许多重大更改有些不情愿。
  • @NiklasRosencrantz,我正在升级 P2.7 应用程序的一项相对简单的服务。在升级 Python 和 App Engine 之间,工作量很大。尽管鉴于 P2.7 即将结束其生命周期,但似乎我们都需要尽快完成此操作......
  • 感谢您的信息。我理解你的情况。我知道升级解决了很多问题,减少了黑客攻击,但我喜欢 2.7 并投入了大量时间和工作。上次我看起来有点粗略,我必须为 memcached 和电子邮件功能找到另一种解决方案。自 2008 年春季以来,我非常喜欢并喜欢 appengine API。
猜你喜欢
  • 1970-01-01
  • 2016-03-20
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多