gpt4 book ai didi

python - 在嵌入 C++ 程序的 python 脚本中使用 matplotlib 时出错

转载 作者:行者123 更新时间:2023-12-01 06:45:07 24 4
gpt4 key购买 nike

我有一个在 C++ 应用程序内调用的 python 脚本。当我导入 matplotlib 时,出现以下错误。

List index out of range.

在我的脚本中,唯一与 matplotlib 相关的代码是

import matplotlib.pyplot as plt
f = plt.figure()

当我单独调用脚本时,它可以工作。仅当它嵌入到 C++ 程序中时,我才会出现此异常。当脚本使用 matplotlib 时,我需要提供一些额外的依赖项吗?

当我注释掉 matplotlib 函数时,我没有得到异常

更新

C++ 代码来自 python 文档 link : 1.3. Pure Embedding

我没有对 C++ 代码进行任何修改。只要没有与 matplotlib 相关的代码,它就可以工作。

最佳答案

原因是在我的例子中,matplotlib 使用的后端是 tktk 的窗口初始化中有此代码

baseName = os.path.basename(sys.argv[0]) 

在我的例子中,argv 为空,这就是列表索引超出范围错误的原因。

我发现了一个解决办法 here 。我们可以像这样传递虚拟值:

    wchar_t const *dummy_args[] = { L"Python", NULL };  // const is needed because literals must not be modified
wchar_t const **argv = dummy_args;
int argc = sizeof(dummy_args) / sizeof(dummy_args[0]) - 1;
PySys_SetArgv(argc, const_cast<wchar_t **>(argv));

关于python - 在嵌入 C++ 程序的 python 脚本中使用 matplotlib 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59264193/

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