我目前正在使用Android开发套件附带的Eclipse并遵循GAE教程:
我从未有任何服务器或后端体验,我希望使用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天。
感谢。
答案 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系统上做了以下事情
写下以下两行并保存文件
#!/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
希望它有所帮助!