小编Ram*_*san的帖子

使用 python c-api 的 Python3 重载项目

我有一个项目,我为它构建了一个 C 类(python c-api),我在 python 项目中扩展了更多。该项目的目的是为 C 库提供一个测试框架。测试主要针对C库的每个pull request执行。

项目需要从Nexus服务器下载C库的相关构建,编译依赖于C库的python类,然后进行测试。

问题:在编译 C 代码后导入/重新加载项目模块。

问题:在我看来,在依赖于 C 库的每个函数中进行导入并不是那么优雅,所以我试图调用 reload,但它似乎不起作用,或者至少不像我期望的那样。

代码为了说明问题,代码超级简化,您可以查看此线程历史记录以查看之前的代码。

main.py

from utils.my_custom_py import MyCustomExtended
from importlib.util import find_spec
from importlib import reload
from os import system, stat
import weakref
import sys


def setup():
    if system('./setup.py clean build install') > 0:
        raise SystemError("Failed to setup python c-api extention class")


def main():
    if find_spec('custom2') is None:
        setup()
        for module_name in list(sys.modules.keys()):
            m = sys.modules.get(module_name)
            if not hasattr(m, '__file__'):
                continue
            if …
Run Code Online (Sandbox Code Playgroud)

python python-3.6

5
推荐指数
1
解决办法
195
查看次数

标签 统计

python ×1

python-3.6 ×1