Google App Engine和上传脚本

时间:2014-03-12 16:14:44

标签: android python google-app-engine python-2.7 backend

我目前正在使用Android开发套件附带的Eclipse并遵循GAE教程:

https://cloud.google.com/developers/articles/how-to-build-mobile-app-with-app-engine-backend-tutorial

我从未有任何服务器或后端体验,我希望使用App Engine的功能制作Android应用程序。

在完成教程后,一切似乎都很顺利,直到我到达你需要的部分"创建一个上传脚本"。我不知道我应该怎么做,我读的越多,我就越困惑。

教程说"创建目录并将其作为当前目录"然后创建一个脚本文件,但我想创建新目录并将其放在Eclipse的AppEngine项目中,在包浏览器或其他地方?我真的不知道所有这些如何一起工作。

我刚刚为Eclipse安装了python 2.7,并确保PyDev解释器指向python.exe但除此之外我还不知道从那一点开始。

EDIT1:我正在使用Cygwin并运行" sh upload_data.shPlace"。当我运行它时,我收到以下错误:

C:\Python27\python.exe: can't open file '/cygdrive/c/Program Files (x86)/Google/google_appengine/appcfg.py': [Errno 2] No such file or directory

我尝试添加" C:\ Program Files(x86)\ Google \ google_appengine \ appcfg.py"到upload.sh文件。它看起来如下:

C:\Program Files (x86)\Google\google_appengine\appcfg.py upload_data --config_file bulkloader.yaml --url=http://localhost:8888/remote_api --filename $1 --kind=$2 -e myemail@mail.com

发生以下错误:

upload_data.sh: line 2: syntax error near unexpected token `('
upload_data.sh: line 2: `/cygdrive/c/Program Files (x86)/Google/google_appengine\appcfg.py upload_data --config_file bulkloader.yaml --url=http://localhost:8888/remote_api --filename $1 --kind=$2 -e mymail@mail.com'

EDIT2:好的,我添加了' \'在'之前('并使用' \'也用于空格。以下是upload.sh中的代码。

C:\Program\Files\(x86\)\Google\google_appengine\appcfg.py upload_data --config_file bulkloader.yaml --url=http://localhost:8888/remote_api --filename $1 --kind=$2 -e mymail@mail.com

然后出现以下错误,出现以下错误:

upload_data.sh: line 2: C:ProgramFiles(x86)Googlegoogle_appengineappcfg.py: command not found

我访问了谷歌应用引擎目录,appcfg.py就在那里。另外,我不太确定我是否真的使用正确的命令。我用过:

  

sh upload.data.sh(箭头括号)places.csv(箭头括号)放置

是否需要将脚本或任何内容放在某个目录中?我已经尝试将appcfg.py文件放在我的脚本目录中,我保留upload_data.sh文件,只是说[Errno 2]没有这样的文件或目录。然后我尝试将文件upload.data,places.csv和bulkloader.yaml放入存储appcfg.py的Google / google_appengine目录中,然后它将返回" Permission Denied"错误。我还将python27重新安装到" google_appengine"文件。我试过运行" appcfg.py"在Cygwin上,只返回[Err2]没有这样的文件或目录。

然后我尝试在Windows命令提示符下运行:

appcfg.py upload_data --config_file
C:\Users\User\Documents\AndroidApps\Scripts\bulkloader.yaml--url=http://localhost:8888/remote_api --filename $1 --kind=$2 -e mymail@mail.com

返回以下错误:

11:09 PM Uploading data records.
Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\google_appengine\appcfg.py", line 126, in
<module>
    run_file(__file__, globals())
  File "C:\Program Files (x86)\Google\google_appengine\appcfg.py", line 122, in
run_file
    execfile(_PATHS.script_file(script_name), globals_)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\ap
pcfg.py", line 4934, in <module>
    main(sys.argv)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\ap
pcfg.py", line 4925, in main
    result = AppCfgApp(argv).Run()
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\ap
pcfg.py", line 2648, in Run
    self.action(self)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\ap
pcfg.py", line 4605, in __call__
    return method()
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\ap
pcfg.py", line 4417, in PerformUpload
    run_fn(args)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\ap
pcfg.py", line 4298, in RunBulkloader
    sys.exit(bulkloader.Run(arg_dict))
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\bu
lkloader.py", line 4406, in Run
    SetupLogging(arg_dict)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\bu
lkloader.py", line 4362, in SetupLogging
    file_handler = logging.FileHandler(log_file, 'w')
  File "C:\Program Files (x86)\Google\google_appengine\lib\logging\__init__.py",
 line 889, in __init__
    StreamHandler.__init__(self, self._open())
  File "C:\Program Files (x86)\Google\google_appengine\lib\logging\__init__.py",
 line 908, in _open
    stream = open(self.baseFilename, self.mode)
IOError: [Errno 13] Permission denied: 'C:\\Program Files (x86)\\Google\\google_
appengine\\bulkloader-log-20140314.230944'

似乎我根本无法在Cygwin中使用appcfg.py。我现在已经被困了近2天。

感谢。

3 个答案:

答案 0 :(得分:1)

链接教程没有这么说,但是&#34;创建上传脚本&#34;部分似乎仅限于将数据从.csv文件上载到开发服务器。我的解释是该目录可以在任何地方,并且与教程中的其他项目无关。

当教程说&#34;创建一个新目录并将其作为当前目录时#34;这意味着在文本控制台中打开命令shell。本教程假设您使用的是Unix类型系统,而不是Windows。想象一下,该目录将被称为mobile-assistant-upload,并且您使用vi作为文本编辑器,那么您的shell命令将是:

mkdir mobile-assistant-data
cd mobile-assistant-data
vi upload_data.sh

请注意,从appcfg.py到电子邮件地址的所有文字都必须在一个长行中,并且您应该使用自己的电子邮件地址。

编辑:我认为upload_data.sh的第2行看起来应该更像:

/cygdrive/c/Program\ Files\ \(x86\)/Google/google_appengine\appcfg.py --config_file bulkloader.yaml --url=http://localhost:8888/remote_api --filename $1 --kind=$2 -e mymail@mail.com

和运行它的命令行:

sh upload.data.sh places.csv Place

没有箭头括号,它们只是文档。当然这假设places.csv在当前目录中。

答案 1 :(得分:1)

我终于通过在管理员模式下运行Windows命令提示符来实现此功能。然后我导航到google_appengine目录。然后我在Windows cmd中使用了以下命令:

appcfg.py upload_data --config_file bulkloader.yaml --url=http://localhost:8888/remote_api --filename places.csv --kind=Place -e mymail@mail.com

在运行命令之前,我还将bulkloader.yaml和places.csv文件放在google_appengine目录中。只需按Enter键就会输入密码,然后文件应该上传到localhost。

答案 2 :(得分:1)

遇到同样的问题。
在这个特定的点上,教程写得不是很好。 我在Ubuntu系统上做了以下事情

  • 下载google_appengine for Python https://developers.google.com/appengine/downloads
  • 在某处提取文件夹
  • 将places.csv和bulkloader.yaml从MobileAssistant-Data复制到文件夹
  • 在该文件夹中创建文件upload_data.sh文件
  • 写下以下两行并保存文件

    #!/bin/sh 
    ./appcfg.py upload_data --config_file bulkloader.yaml --url=http://localhost:8888/remote_api --filename $1 --kind=$2 -e nobody@nowhere.com
    
  • 使文件可执行chmod a+x upload_data.sh

如果一切顺利,请运行:

<google_appengine folder>./upload_data.sh places.csv Place

应输出如下内容:

12:55 PM Uploading data records.
[INFO    ] Logging to bulkloader-log-20140918.125544
[INFO    ] Throttling transfers:
[INFO    ] Bandwidth: 250000 bytes/second
[INFO    ] HTTP connections: 8/second
[INFO    ] Entities inserted/fetched/modified: 20/second
[INFO    ] Batch Size: 10
Password for nobody@nowhere.com: 
[INFO    ] Opening database: bulkloader-progress-20140918.125544.sql3
[INFO    ] Connecting to localhost:8888/remote_api
[INFO    ] Starting import; maximum 10 entities per post
.
[INFO    ] 2 entities total, 0 previously transferred
[INFO    ] 2 entities (1696 bytes) transferred in 58.8 seconds
[INFO    ] All entities successfully transferred

希望它有所帮助!