在.NET中导入Python模块 - “没有名为signal的模块”

3 投票
1 回答
2732 浏览
提问于 2025-04-15 11:30

我正在尝试在C#代码中导入一个Python模块,代码是这样的:

        var setup = Python.CreateRuntimeSetup(null);
        var runtime = new ScriptRuntime(setup);
        var engine = Python.GetEngine(runtime);
        var module = engine.ImportModule("mymodule");

但是我遇到了一个错误,提示“没有名为signal的模块”。这是不是意味着IronPython根本无法加载这个signal模块?这和操作系统有关吗?

有没有人能想到解决办法?

1 个回答

2

“signal”模块是用来处理与信号相关的所有事情的。你猜对了,信号就是操作系统(OS)发送给进程的特殊“消息”,用来告诉它一些事情,比如:中断、杀死、终止等等。具体的消息种类通常是跟操作系统有关的,不过正如Python手册所说,Python模拟的是BSD风格的接口,除了SIGCHLD这个信号。

在CPython中,“signal”模块是内置的,记得没错的话。可能IronPython没有实现这个模块,实际上,快速搜索一下IronPython的网站就能发现这个信息:IronPython和CPython的区别(建议你读一下,特别是扩展模块那部分!)

可能的解决办法是:修改你的模块,让它在IronPython中不使用信号。

撰写回答