gpt4 book ai didi

Python:IOError:调用中缺少参数

转载 作者:太空宇宙 更新时间:2023-11-03 17:08:52 26 4
gpt4 key购买 nike

我正在尝试导入模块并创建其类的对象,如下所示:

>>> import scriptsim
>>> scriptsim.Simulator()

但出现以下错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: missing arguments in invokation

注意:可以看出,scriptsim 已正确安装,因为导入时不会出现错误。我按以下方式使用 help 命令来确认 Simulator 方法没有必需的参数。

>>> help(scriptsim.Simulator)

任何人都可以帮我理解此错误的原因是什么。谢谢!!

最佳答案

scriptsim 是一个 C 扩展模块,因此异常和回溯信息仅在模块想要提供给您的范围内可用。您的问题是该模块需要配置,并且它实际上从程序命令参数(sys.argv)中提取其配置。这是邪恶的。

但是如果您查看其 python_agent.c ( download and uppack here ),您会看到:

    Py_GetArgcArgv (&argc, &argv);
if (argc < 5) {
PyErr_SetString (PyExc_IOError,
"missing arguments in invokation");
fatal_error = 1;
return -1;
}
{
int tcp_port, read_fn, reg_num;
const char *error_msg = NULL;
if (sscanf (argv[3], "%d", &tcp_port) != 1) {
PyErr_SetString (PyExc_IOError,
"invalid argv[3] in invokation");
fatal_error = 1;
return -1;
}
if (sscanf (argv[4], "%d", &read_fn) != 1) {
PyErr_SetString (PyExc_IOError,
"invalid argv[4] in invokation");
fatal_error = 1;
return -1;
}
if (sscanf (argv[5], "%d", &reg_num) != 1) {
PyErr_SetString (PyExc_IOError,
"invalid argv[5] in invokation");
fatal_error = 1;
return -1;
}

假设您知道 tcp_portread_fnreg_num 是什么,您可以通过设置自己的 来为模块提供所需的内容>sys.argv 在第一次调用之前。这些是参数字符串,因此根据需要转换 int 等。

# copy args and configure simulator
argv = sys.argv
try:
sys.argv = [argv[0], 'dummy', 'dummy', tcp_port, read_fn, reg_num]
sim = scriptsim.Simulator()
finally:
sys.argv = argv

关于Python:IOError:调用中缺少参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34327315/

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