我从命令提示符运行了应用程序引擎本地开发服务器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_ROOT
:C:\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_appengine
和C:\Program Files (x86)\Google\google_appengine
似乎在将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安装程序执行此操作 - 如何撤消它?
答案 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