我正在尝试运行此处描述的基本helloworld代码https://cloud.google.com/appengine/docs/python/。但是,每当我尝试使用dev_appserver.py helloworld /命令时,我都会收到dev_appserver.py命令的使用错误。
我已经安装了Python 2.7,并且在我的系统上安装了Python 2.7 Anaconda。 Anaconda Python会成为问题的原因吗?
我的代码的文件结构如下:
我尝试从'Project'文件夹和'helloworld'文件夹中执行dev_appserver.py helloworld /命令。但在这两种情况下我都得到同样的错误。
任何帮助将不胜感激!
谢谢!
答案 0 :(得分:9)
我想我发现了这个错误背后的“真实”问题。
尝试在print
文件中放置一些dev_appserver.py
语句,发现我们给出的任何参数都没有被传递,因此错误。在谷歌搜索遇到了this SO帖子,这解释了问题。在做这个改变时,以下命令完美无缺:D
dev_appserver.py app.yaml
引用SO答案以便于参考:
我想我解决了这个问题。由于某种原因,注册表中存在第二个位置(除了存储在HKEY_CLASSES_ROOT \ Python.File \ shell \ open \ command中的文件关联所示):
[HKEY_CLASSES_ROOT\Applications\python.exe\shell\open\command] @="\"C:\\Python25\\python.exe\" \"%1\" %*"
这似乎是我系统的控制设置。上面的注册表设置添加了“%*”以将所有参数传递给python.exe(由于某种原因,它在我的注册表中丢失了。)
答案 1 :(得分:6)
您只需按照评论中的建议,在命令本身中执行带dev_appserver.py
路径的app.yaml
。
答案 2 :(得分:3)
我认为OP在描述多个Python安装时可能已经确定了一个潜在的问题。
如果我没有指定哪个Python安装(我想到我只有一个...),那么它就会失败:
C:\Python27>"C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin\dev_appserver.py" "C:\users\jessmine\documents\ttbtamer\app.yaml"
usage: dev_appserver.py [-h] [-A APP_ID] [--host HOST] [--port PORT]
...etc...
dev_appserver.py: error: too few arguments
但是如果我首先通过调用 Python 指定使用哪个Python,@ C:\Python27\python.exe
,那么它可以工作:
C:\Python27>"C:\Python27\python.exe" "C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin\dev_appserver.py" "C:\users\jessmine\documents\ttbtamer\app.yaml"
INFO 2016-11-18 10:09:14,299 devappserver2.py:769] Skipping SDK update check.
无论如何,因为我不认为我的计算机上安装了其他Python,所以我可能会误解这里的差异。但对我来说,修复是显式调用python.exe 。
(并且要清楚,我知道将Python.exe位置放入%PATH%
,但我预计如果它不存在,那么错误就会像&那样#34;' dev_appserver.py'不被识别为内部或外部命令"而不是执行和打印Python错误....)
修改强>
更改"将文件类型或协议与特定程序相关联后#34; (example here)*.py
明确地使用C:\ Python27 \ python.exe,然后我不再需要在我的cmd中手动调用C:\Python27\python.exe
;即我的第一个例子正常工作:
C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\bin>dev_appserver.py "C:\users\jessmine\documents\ttbtamer\app.yaml"
INFO 2016-11-18 10:33:50,269 devappserver2.py:769] Skipping SDK update check.
答案 3 :(得分:2)
我遇到了同样的问题。我甚至在一台新机器上安装了所有东西,我又遇到了同样的错误。
所以我“调试”了dev_appserver.py并且我发现传递给它的参数(即'app.yaml'或'。'或'\ hello_world')没有传递给下面的代码文件:
...\google-cloud-sdk\platform\google_appengine\google\appengine\tools\devappserver2\devappserver2.py
在这个文件中检查了参数,产生臭名昭着的错误“参数太少”。 出于对失去的时间的绝望,我做了一个快速(并且肯定是丑陋的)补丁。
我在第302和303行注释了验证规则:
parser.add_argument(
'config_paths', metavar=arg_name, nargs='+', help=arg_help)
在第758行,我更换了:
options.config_paths, options.app_id)
使用静态文件名:
{'app.yaml'}, options.app_id)
至少现在我能够再次启动服务器并开发我的应用程序。现在我可以再次工作,我将尝试更好地了解如何纠正问题。
我不是Python也不是Google App Engine专家,所以我希望有人会提出更好的更正并更好地解释问题,因为我无法相信Google可以发布这样的错误代码!
答案 4 :(得分:0)
我建议你进入你的helloworld文件夹并运行dev_appserver.py .
不要忘记结束点'。'标志。
希望它有效
答案 5 :(得分:0)
在我的情况下,我可以通过执行以下两个操作来解决此问题: 1)。在命令的开头添加了“python” 2)。提供了“dev_appserver.py”文件的完整路径。
因此,在Google文档中,您会发现执行以下操作: -
> dev_appserver.py ./ --php_executable_path=/path/to/php-cgi
(请注意,我试图在这里运行php示例和Windows环境...)
而是运行以下命令:
> python "c:\<path to the directory containing the dev_appserver.py script>\dev_appserver.py" ./ --php_executable_path=/path/to/php-cgi