从命令提示符运行应用程序引擎本地开发服务器(v1.9.36) - Google Cloud并发症(没有名为portpicker的模块)

时间:2016-04-21 18:05:21

标签: google-app-engine

我从命令提示符运行了应用程序引擎本地开发服务器3年没有任何问题(Windows 7,64位)。我刚刚更新到v1.9.36(从this page下载960cfe2157c6e984802db4b0224cfe8273d727dc),现在我正在运行

dev_appserver.py [anything]

我明白了:

  

回溯(最近一次调用最后一次):文件" C:\ Program   文件\谷歌\云   SDK \ google-cloud-sdk \ platform / google_appengine \ dev_appserver.py",line   82,在       _run_file( file ,globals())文件" C:\ Program Files \ Google \ Cloud   SDK \ google-cloud-sdk \ platform / google_appengine \ dev_appserver.py",line   78,在_run_file中       execfile(_PATHS.script_file(script_name),globals_)文件" C:\ Program Files   (86)\谷歌\ google_appengine \谷歌\应用服务引擎\工具\ devappserver2 \ devappserver2.py&#34 ;,   第37行       来自google.appengine.tools.devappserver2导入调度程序文件" C:\ Program Files   (86)\谷歌\ google_appengine \谷歌\应用服务引擎\工具\ devappserver2 \ dispatcher.py&#34 ;,   29号线,在       来自google.appengine.tools.devappserver2导入模块文件" C:\ Program Files   (86)\谷歌\ google_appengine \谷歌\应用服务引擎\工具\ devappserver2 \ module.py&#34 ;,   第55行       来自google.appengine.tools.devappserver2 import http_runtime文件" C:\ Program Files   (86)\谷歌\ google_appengine \谷歌\应用服务引擎\工具\ devappserver2 \ http_runtime.py&#34 ;,   第53行       import portpicker ImportError:没有名为portpicker的模块

奇怪的是,如果我使用SDK GUI,并点击'运行'按钮,它启动很好,没有错误。所以我的猜测是,当从命令行运行时,它使用' dev_appserver.py'的版本。在Cloud SDK文件夹中,而GUI正在C:\Program Files (x86)\Google\google_appengine\中运行版本。但我的环境变量是:

GAE_SDK_ROOTC:\Program Files (x86)\Google\google_appengine

PATH:还有很多其他内容,加上C:\Program Files (x86)\Google\google_appengine\

我没有看到对Cloud SDK的任何引用,所以我无法弄清楚为什么文件夹中的版本会被运行。

C:\Program Files\Google\Cloud SDK\google-cloud-sdk\platform\google_appengineC:\Program Files (x86)\Google\google_appengine

中都有dev_appserver.py版本

似乎在将GAE SDK与Google Cloud结合使用时,谷歌已经比以前更复杂了。

[UPDATE]

如果我在其他许多事情中运行echo %PATH%,我会看到

C:\Program Files\Google\Cloud SDK\google-cloud-sdk..

C:\Program Files (x86)\Google\google_appengine\

这解释了为什么它运行该版本。现在的问题是:如果我没有在我的用户PATH变量中设置它,为什么前者在我的PATH中? Windows PATH还在哪里被操纵?推荐Google Cloud SDK安装程序执行此操作 - 如何撤消它?

3 个答案:

答案 0 :(得分:1)

新答案

我发现Cloud SDK文件夹位于系统路径中,在用户路径之前已经检查过,因此Cloud SDK中的dev_appserver.py版本是正在执行,而不是app引擎文件夹中的最新版本。

要解决这个问题,我只需使用方便的应用程序here

从我的系统路径中删除Cloud SDK

原始答案

我计算出如果我重命名Cloud SDK中的C:\Program Files\Google文件夹,则会修复它。但这是一个hacky修复,并且可能使Cloud SDK功能不可用(我不认为我目前需要它)。

所以我仍然喜欢这个问题的正确答案。似乎我需要一种方法来控制运行dev_appserver.py的版本,而不是设置我的环境变量(我已经完成了)我不知道还有什么可以尝试。

答案 1 :(得分:1)

执行dev_appserver.py [anything]将启动可执行dev_appserver.py环境中遇到的第一个PATH可执行文件,该环境似乎不是您期望的那个:)

您有两个选择:

  • 根据需要更新PATH
  • 通过指定其完整路径执行所需的dev_appserver.py
C:\Program Files (x86)\Google\google_appengine\dev_appserver.py [anything]

这个答案在某种程度上是相关的:appcfg.py not working in command line

答案 2 :(得分:1)

作为其他答案的替代方案,如果您没有安装旧的独立Google App Engine并且只使用Google SDK,您还可以使用以下命令行安装portpicker(假设您已安装pip):

pip install portpicker