Google app engine 从命令提示符(v1.9.36)运行AppEngine本地开发服务器-谷歌云(没有名为portpicker的模块)

Google app engine 从命令提示符(v1.9.36)运行AppEngine本地开发服务器-谷歌云(没有名为portpicker的模块),google-app-engine,Google App Engine,我已经在命令提示符下运行AppEngine本地开发服务器3年了,没有出现任何问题(Windows7,64位)。我刚刚更新到v1.9.36(从下载960cfe2157c6e984802db4b0224cfe8273d727dcfrom),现在当我运行 dev_appserver.py [anything] 我得到: 回溯(最近一次调用):文件“C:\Program” 文件\谷歌\云 SDK\google cloud SDK\platform/google\u appengine\dev\u ap

我已经在命令提示符下运行AppEngine本地开发服务器3年了,没有出现任何问题(Windows7,64位)。我刚刚更新到v1.9.36(从下载
960cfe2157c6e984802db4b0224cfe8273d727dc
from),现在当我运行

dev_appserver.py [anything]
我得到:

回溯(最近一次调用):文件“C:\Program” 文件\谷歌\云 SDK\google cloud SDK\platform/google\u appengine\dev\u appserver.py“,第行 82,在 _运行_文件(文件,globals())文件“C:\Program Files\Google\Cloud” SDK\google cloud SDK\platform/google\u appengine\dev\u appserver.py“,第行 78,在_run _文件中 execfile(_path.script_file(script_name),globals_uu)file“C:\Program Files (x86)\Google\Google\u appengine\Google\appengine\tools\devappserver 2\devappserver 2.py“, 第37行,在 从google.appengine.tools.devappserver2导入调度程序文件“C:\Program Files (x86)\Google\Google\u appengine\Google\appengine\tools\devappserver2\dispatcher.py“, 第29行,在 从google.appengine.tools.devappserver2导入模块文件“C:\Program Files (x86)\Google\Google\u appengine\Google\appengine\tools\devappserver2\module.py“, 第55行,输入 从google.appengine.tools.devappserver2导入http_运行时文件“C:\Program Files” (x86)\Google\Google\u appengine\Google\appengine\tools\devappserver2\http\u runtime.py“, 第53行,输入 导入portpicker ImportError:没有名为portpicker的模块

奇怪的是,如果我使用SDK GUI,并点击“运行”按钮,它会正常启动,没有错误。因此,我的猜测是,当从命令行运行时,它使用的是
CloudSDK
文件夹中的“dev_appserver.py”版本,而GUI运行的是
C:\Program Files(x86)\Google\Google\u appengine\
中的版本。但我的环境变量是:

GAE\u SDK\u ROOT
C:\Program Files(x86)\Google\Google\u appengine

PATH
:很多其他东西,加上
C:\ProgramFiles(x86)\Google\Google\u appengine\

我没有看到任何关于
云SDK
的参考,因此我无法理解为什么会运行文件夹中的版本

dev_appserver.py在
C:\Program Files\Google\Cloud SDK\Google Cloud SDK\platform\Google_appengine
C:\Program Files(x86)\Google\Google_appengine

似乎在将GAE SDK与谷歌云相结合的过程中,谷歌使这比过去更加复杂

[更新]

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

C:\ProgramFiles\Google\Cloud SDK\Google Cloud SDK..

以前

C:\程序文件(x86)\Google\Google\u appengine\

这就解释了为什么它会运行这个版本。现在的问题是:如果我没有在用户路径变量中设置前者,为什么前者会出现在我的路径中?Windows路径在哪里被操纵?谷歌云SDK安装程序可能是这么做的-我如何撤销它

新答案 我发现Cloud SDK文件夹位于我的系统路径中,该路径在用户路径之前被检查,因此正在执行Cloud SDK中的dev_appserver.py版本,而不是app engine文件夹中的最新版本

为了解决这个问题,我只需从我的系统路径中删除CloudSDK,使用方便的应用程序

原始答案 我计算出,如果我重命名
C:\Program Files\Google
中的
Cloud SDK
文件夹,就会修复它。但这是一个黑客补丁,可能会使
云SDK
功能不可用(我认为我目前不需要它)


所以我还是想得到这个问题的正确答案。似乎我需要一种方法来控制运行哪个版本的dev_appserver.py,并且在没有设置环境变量(我已经做了)的情况下,我不知道还能尝试什么

执行
dev_appserver.py[任何内容]
将启动可执行
路径
环境中遇到的第一个
dev_appserver.py
可执行文件,它似乎不是您期望的:)

您有两种选择:

  • 根据需要更新您的
    路径
  • 通过指定其完整路径来执行所需的
    dev_appserver.py

这个答案在某种程度上是相关的:

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


是的,但是我已经设置了路径以包含正确的文件夹,并且没有对
Cloud SDK
文件夹的引用,但不知何故,它正在
Cloud SDK
中运行版本,因此肯定发生了其他事情。
C:\Program Files (x86)\Google\google_appengine\dev_appserver.py [anything]
pip install portpicker