Google app engine 使用GAE Python第二代在本地运行

Google app engine 使用GAE Python第二代在本地运行,google-app-engine,google-app-engine-python,Google App Engine,Google App Engine Python,我已经使用GAE/p第一代很多年了,现在我正在着手我的第一个GAE/p第二代项目 我试图在本地运行它,就像我在第一代应用程序中使用dev_appserver.py时所做的那样,但在这方面非常混乱 我可以自己运行Flask(python main.py),但是静态文件不起作用(因为Flask对app.yaml一无所知),数据存储也不起作用 GAE文档说,dev_appserver.py应该适用于第二代(除了在Windows上,但我在Mac上),但当我运行它时,我得到以下错误 当我使用Python2

我已经使用GAE/p第一代很多年了,现在我正在着手我的第一个GAE/p第二代项目

我试图在本地运行它,就像我在第一代应用程序中使用dev_appserver.py时所做的那样,但在这方面非常混乱

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

GAE文档说,
dev_appserver.py
应该适用于第二代(除了在Windows上,但我在Mac上),但当我运行它时,我得到以下错误

当我使用Python2或Python3运行dev_appserver.py时会发生这种情况。我还按照说明将
CLOUDSDK\u PYTHON
设置为我的python2二进制文件

那么,我该如何以静态文件和数据存储工作的方式在本地运行我的GAE/P2nd gen项目呢


$python~/googlecloudsdk/bin/dev\u appserver.py--application=myapp--support\u datastore\u emulator=False./app.yaml
信息2019-02-12 00:39:21885 devappserver2.py:278]正在跳过SDK更新检查。
信息2019-02-12 00:39:23128 api_服务器。py:275]正在以下位置启动api服务器:http://localhost:51187
信息2019-02-12 00:39:23139实例_factory.py:71]检测到Python 3.6.5
信息2019-02-12 00:39:24459实例_factory.py:205]使用pip安装依赖库;pip标准输出被重定向到/var/folders/yd/xr84fg0946l72fp_cc6j9l540000gr/T/tmpj3SEUZ
信息2019-02-12 00:39:24459实例_factory.py:211]正在运行/var/folders/yd/xr84fg0946l72fp_cc6j9l54000gr/T/tmpLtysT3/bin/pip安装--升级pip
信息2019-02-12 00:39:24469存根_util.py:357]应用所有挂起的事务并保存数据存储
信息2019-02-12 00:39:24469存根保存搜索索引
回溯(最近一次呼叫最后一次):
文件“/…/google cloud sdk/platform/google_appengine/dev_appserver.py”,第96行,在
_运行\u文件(\uuuu文件,globals())
文件“/…/googlecloudsdk/platform/google\u appengine/dev\u appserver.py”,第90行,在运行文件中
execfile(_PATHS.script_文件(script_名称),全局文件)
文件“/…/google cloud sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py”,第600行,在
main()
文件“/…/google cloud sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py”,主文件第588行
dev_server.start(选项)
文件“/…/google cloud sdk/platform/google_appengine/google/appengine/tools/devappserver2/devappserver2.py”,第360行,开头
options.api\u host、apiserver.port、wsgi\u request\u info\u
文件“/…/google cloud sdk/platform/google_appengine/google/appengine/tools/devappserver2/dispatcher.py”,第248行,开始
ssl(U端口)
文件“/…/google cloud sdk/platform/google\u appengine/google/appengine/tools/devappserver2/dispatcher.py”,第384行,在创建模块中
ssl\u端口=ssl\u端口)
文件“/…/google cloud sdk/platform/google\u appengine/google/appengine/tools/devappserver2/module.py”,第1309行,在__
超级(自动缩放模块,自我)。\uuuuu初始化(**kwargs)
文件“/…/google cloud sdk/platform/google\u appengine/google/appengine/tools/devappserver2/module.py”,第598行,在__
自身(模块配置)
文件“/…/google cloud sdk/platform/google\u appengine/google/appengine/tools/devappserver2/module.py”,第231行,在创建实例工厂中
模块配置=模块配置)
文件“/…/google cloud sdk/platform/google\u appengine/google/appengine/tools/devappserver2/python/instance\u factory.py”,第98行,在__
self.\u setupVirtualNVromConfiguration()
文件“/…/google cloud sdk/platform/google_appengine/google/appengine/tools/devappserver2/python/instance_factory.py”,第143行,在_SetupVirtualenvFromConfiguration中
self.\u venv\u dir,requirements\u file.name)
文件“/…/google cloud sdk/platform/google\u appengine/google/appengine/tools/devappserver2/python/instance\u factory.py”,第228行,在SetupVirtualenv中
cls.\u RunPipInstall(venv\u目录、要求\u文件\u名称)
文件“/…/google cloud sdk/platform/google\u appengine/google/appengine/tools/devappserver2/python/instance\u factory.py”,第212行,在runpipininstall中
pip_proc=subprocess.Popen(pip_cmd,stdout=pip_out)
文件“/usr/local/cillar”/python@2/2.7.15/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py”,第394行,在__
错误读取,错误写入)
文件“/usr/local/cillar”/python@2/2.7.15/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py”,第1047行,在执行子进程中
引发子对象异常
OSError:[Errno 2]没有这样的文件或目录

睡了一晚好觉后,我终于找到了问题所在

我在虚拟环境中运行dev_appserver.py。出于某种原因,这使得
dev_appserver.py
无法找到
pip
(需要在my
requirements.txt
中安装软件包)


运行
dev_appserver.py
之前退出我的虚拟环境修复了问题。

相关:做得好。我仍然使用旧版本,有点不愿意做很多突破性的更改。@NiklasRosencrantz,我正在升级一个相对简单的P2.7应用程序服务。在升级Python和AppEngine之间,需要做很多工作。尽管P2.7即将结束其生命周期,但似乎我们都需要尽快完成这项工作……感谢您提供的信息。我理解你的处境。我知道升级用更少的黑客解决了很多问题,但我喜欢2.7,并为此投入了大量时间和精力。有点粗略,上次我看的时候,我必须找到另一个解决方案,既用于memcached,也用于电子邮件功能。从2008年春天开始,我非常喜欢appengine API。
$ 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