gpt4 book ai didi

python - 有没有办法通过 zipimport 使用已编译的 C 模块?

转载 作者:太空宇宙 更新时间:2023-11-04 06:05:11 25 4
gpt4 key购买 nike

当我的 sys.path 中有一个 python 共享对象文件 (.so) 时,我可以简单地执行以下操作:

import _ctypes

它将导入python2.7/lib-dynload/_ctypes.so

但是,如果我使用名为 tmp.zip 的 zip 文件,其中包含:

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 进行操作感兴趣。我知道还有其他方法可以做到这一点,例如手动提取存档并创建文件。

最佳答案

看来我在完全阅读文本方面确实有很大的问题:

This module adds the ability to import Python modules (*.py, *.py[co]) and packages from ZIP-format archives..

所以答案很明确,我正在尝试实现一些不可能的事情......没有办法用它来逃避 python 沙箱,因为即使在正常环境下也无法完成。

关于python - 有没有办法通过 zipimport 使用已编译的 C 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38775427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com