我有一个项目,我为它构建了一个 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)