pytoapp中的boto死于初始化读取json文件

时间:2016-03-25 00:41:05

标签: python boto py2app

我已经构建了一个简单的python / tkinter应用程序来使用boto库来启动和停止AWS EC2实例。当使用带有py2app(别名)选项的-A构建到mac应用程序时,它可以独立运行并且很好,可以使用符号链接而不是复制所有内容。

当boto启动时,它会尝试从名为endpoints.json的boto包顶层文件中读取其区域数据。

当我运行py2app构建的可执行文件时,我收到此消息:

3/24/16 8:22:17.860 PM MyApp[49220]: IOError: [Errno 20] Not a directory: '/Users/me/src/ec2-app/dist/MyApp.app/Contents/Resources/lib/python2.7/site-packages.zip/boto/endpoints.json'

请注意,它正在尝试从包含此zip文件的路径中读取:site-packages.zip。如果我查看该zip文件,确实有一个文件boto/endpoints.json。看起来py2app将所有相关网站内容收集到此zip文件中,并希望代码能够通读。

如何从py2app应用程序获得boto工作?

这是py2app的setup.py文件:

from setuptools import setup

APP = ['main.py']
APP_NAME = "MyApp"
DATA_FILES = []

OPTIONS = {
    'argv_emulation': True,
}

setup(
    app=APP,
    data_files=DATA_FILES,
    options={'py2app': OPTIONS},
    py_modules=['instance', 'settings'],
    setup_requires=['py2app'],
)

1 个答案:

答案 0 :(得分:0)

这些天我遇到了类似的问题

<Notice>: IOError: [Errno 20] Not a directory: '/Users/kawhi/Desktop/dpdb/dist/runserver.app/Contents/Resources/lib/python2.7/site-packages.zip/dpdb/templates/index.html'

我不知道为什么,但当我走到路径runserver.app/Contents/Resources/lib/python2.7/时,找到zip文件site-packages.zip,我做了3个步骤。

  1. 我解压缩了site-packages.zip
  2. 我将site-packages.zip重命名为site-packages.zip.bak
  3. 将解压缩文件site-packages重命名为site-packages.zip
  4. 之后/Users/kawhi/Desktop/dpdb/dist/runserver.app/Contents/Resources/lib/python2.7//python2.7/site-packages.zip/dpdb/templates/index.html是一个目录。我的申请工作正常。