首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 273和Amazon BotoCore

Python 273和Amazon BotoCore
EN

Stack Overflow用户
提问于 2015-06-12 16:47:56
回答 1查看 242关注 0票数 10

在一个空间有限的小型嵌入式Linux设备上,我试图将大型10 Mb (AWS) BotoCore库(https://github.com/boto/botocore)放在一个压缩文件中,然后使用PEP273 (https://www.python.org/dev/peps/pep-0273/)中描述的zipimport将其导入到Python中。

我修改了我的脚本,使其在开头有以下几行:

代码语言:javascript
复制
## Use zip imports
import sys
sys.path.insert(0, '/usr/lib/python2.7/site-packages/site-packages.zip') 

zip文件中只有botocore,而目录本身有我使用的其他模块,但不包括botocore。

下面是该目录的清单:

代码语言:javascript
复制
    /usr/lib/python2.7/site-packages >> ls -rlt
    total 1940
-rw-rw-r-- 1 root root   32984 Jun  8 12:22 six.pyc
-rw-r--r-- 1 root root     119 Jun 11 07:43 README
drwxrwxr-x 2 root root    4096 Jun 11 07:43 requests-2.4.3-py2.7.egg-info
drwxrwxr-x 2 root root    4096 Jun 11 07:43 six-1.9.0-py2.7.egg-info
drwxrwxr-x 2 root root    4096 Jun 11 07:43 python_dateutil-2.4.2-py2.7.egg-info
drwxrwxr-x 2 root root    4096 Jun 11 07:43 jmespath-0.7.0-py2.7.egg-info
-rw-rw-r-- 1 root root    2051 Jun 11 07:44 pygtk.pyc
-rw-rw-r-- 1 root root    1755 Jun 11 07:44 pygtk.pyo
-rw-rw-r-- 1 root root       8 Jun 11 07:44 pygtk.pth
drwxrwxr-x 2 root root    4096 Jun 11 07:44 futures-2.2.0-py2.7.egg-info
drwxrwxr-x 3 root root    4096 Jun 11 07:44 gtk-2.0
drwxrwxr-x 3 root root    4096 Jun 11 07:44 requests
drwxrwxr-x 3 root root    4096 Jun 11 07:44 dbus
drwxrwxr-x 3 root root    4096 Jun 11 07:44 dateutil
drwxrwxr-x 2 root root    4096 Jun 11 07:44 jmespath
drwxrwxr-x 3 root root    4096 Jun 11 07:44 concurrent
drwxrwxr-x 2 root root    4096 Jun 11 07:44 futures
drwxrwxr-x 2 root root    4096 Jun 12 10:42 gobject
drwxrwxr-x 2 root root    4096 Jun 12 10:42 glib
-rwxr-xr-x 1 root root    5800 Jun 12 10:42 _dbus_glib_bindings.so
-rwxr-xr-x 1 root root   77680 Jun 12 10:42 _dbus_bindings.so
-rwxr-xr-x 1 root root 1788623 Jun 12 11:39 site-packages.zip

下面是这个the文件的内容:

我的问题是,我可以导入boto3并导入botocore,但是当我尝试使用其中包含的一些API方法时,我会得到这样的异常:

代码语言:javascript
复制
>> Unknown component: enpoint_resolver

代码语言:javascript
复制
>> Unable to load data for: aws/_endpoints!

如果我删除压缩后的压缩文件,在网站包目录和重新启动-我的脚本工作良好。

我如何利用can文件导入来压缩这个庞大的库?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-15 14:12:47

不幸的是,这是行不通的。

PEP 273要求库作者遵循某些规则,而这个包没有这样的规则。特别是,它是__file__,而不是pkgutil.get_data()或等效的API。因此,这些文件必须实际存在于文件系统中。

您可以尝试使用FUSE在文件系统中挂载.zip文件,因此在Python看来,它似乎是未压缩的,而没有占用所有的磁盘空间。通过谷歌,我想出了一个熔丝拉链,它看起来很合适。您需要运行一些基准测试,以确保它在您的系统上运行良好。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30808297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档