当我在sys.path中有一个python共享对象文件(.so
)时,我可以这样做:
import _ctypes
它将导入python2.7/lib-dynload/_ctypes.so
。
但是,如果我使用名为tmp.zip
的zipfile包含:
Hello/_World.so
world.so
包含格式正确的init_World
函数,然后:
Python 2.7.10 (default, Jun 1 2015, 18:05:38)
[GCC 4.9.2] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path.insert(0, 'tmp.zip')
>>> import _World
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
zipimport.ZipImportError: can't find module _World
我读到在C语言系统外加载共享对象文件是不可能的。
这是否意味着我想要实现的目标是不可能的,并且应该从档案中提取_World.so
?
我只对使用zipimport
直接进行操作感兴趣。我知道还有其他方法可以手动提取存档并创建文件。
答案 0 :(得分:-3)
看来我完全阅读文本时遇到了很大的问题:
所以答案很清楚,我正在努力实现一些不可能的事情......因为即使在正常环境下也无法完成,所以无法逃脱python沙箱。