Google Cloud构建错误 "print_env_info.py: 错误:无法识别的参数
我正在尝试在我的Windows(64位)电脑上搭建一个Google Cloud的开发环境。
我按照https://console.developers.google.com/start/appengine上的Java说明进行操作,但在第6步(“创建你的项目并部署”)时遇到了这个错误信息:
D:\google-app-engine\appengine-try-java>appcfg.cmd -A midyear-tempo-554 update t arget\appengine-try-java 使用方法: print_env_info.py [-h] 项目 print_env_info.py: 错误:未识别的 参数: Osofsky\AppData\Roaming\gcloud \tmp-env-info-10521.txt
我完成了其他所有步骤。唯一的异常是在第4步(“本地运行你的应用”)时,当我尝试运行install.bat时出现了以下错误:
要使用Google Cloud SDK,你必须安装Python并将其添加到你的PATH中。作为替代方案,你也可以将CLOUDSDK_PYTHON环境变量设置为你的Python可执行文件的位置。
我通过在install.bat中添加以下一行成功解决了这个问题:
set CLOUDSDK_PYTHON=C:\Python27\python.exe
我不确定这是否导致了"print_env_info.py: error: unrecognized arguments"
的错误,但看起来是相关的,因为它们都与环境变量有关。所以我将CLOUDSDK_PYTHON=C:\Python27\python.exe
添加到了我的用户级环境变量中。然后我启动了一个新的命令提示符,通过"set"
命令确认CLOUDSDK_PYTHON=C:\Python27\python.exe
已经注册,并再次尝试,但我仍然得到了这个错误:
D:\google-app-engine\appengine-try-java>appcfg.cmd -A midyear-tempo-554 update t arget\appengine-try-java 使用方法: print_env_info.py [-h] 项目 print_env_info.py: 错误:未识别的 参数: Osofsky\AppData\Roaming\gcloud \tmp-env-info-8445.txt
有什么想法吗?
2 个回答
问题似乎出在目录名称中的空格上,它在尝试打印临时文件时遇到了麻烦。以下是我解决这个问题的步骤:
1) 创建一个新的空目录,路径中不要有空格,比如说 D:\google-cloud-sdk\tmp
2) 修改 D:\google-cloud-sdk\bin\appcfg.cmd
文件,把 %APPDATA%\gcloud\
替换成你刚刚创建的目录路径 D:\google-cloud-sdk\tmp\
谷歌企业支持的一个代表,叫做Jordan,给我提供了下面这个修改过的appcfg.cmd文件。这个文件帮我解决了我之前遇到的错误。不过现在又出现了另一个问题,但我觉得下面的解决方案可以解决我之前提到的那个错误。感谢Heeryu和Tatiana愿意提供帮助。
@echo off
rem Copyright 2013 Google Inc. All Rights Reserved.
cmd /c "python "%~dp0bootstrapping\prerun.py" --command-name=appcfg-java --component-id=gae-java --check-credentials --check-updates"
IF %ERRORLEVEL% NEQ 0 (
EXIT /B %ERRORLEVEL%
)
SETLOCAL
set TMPFILE=%APPDATA%\gcloud\tmp-env-info-%RANDOM%.txt
cmd /c "python "%~dp0bootstrapping\print_env_info.py" gae_java_path > "%TMPFILE%"
IF %ERRORLEVEL% NEQ 0 (
EXIT /B %ERRORLEVEL%
)
set /p credential_path= < "%TMPFILE%"
del "%TMPFILE%"
cmd /c ""%~dp0..\platform/appengine-java-sdk\bin\appcfg.cmd" --oauth2 --oauth2_config_file="%credential_path%" %*"
IF %ERRORLEVEL% NEQ 0 (
EXIT /B %ERRORLEVEL%
)
ENDLOCAL