VS2010调用matplotlib画图报“sys.argv[0] IndexError: list index out of range”

代码如下

Py_SetPythonHome(L"D:\\ProgramData\\Miniconda3_32");
Py_Initialize();//使用python之前,要调用Py_Initialize();这个函数进行初始化

PyRun_SimpleString("import matplotlib.pyplot as plt"); /*调用python文件*/
PyRun_SimpleString("plt.plot([1,2,3,4], [12,3,23,231])"); /*调用python文件*/
PyRun_SimpleString("plt.show()"); /*调用python文件*/
Py_Finalize();//调用Py_Finalize,这个根Py_Initialize相对应的。

报错信息:

  File "<string>", line 1, in <module>
  File "D:\ProgramData\Miniconda3_32\lib\site-packages\matplotlib\pyplot.py", li
ne 3019, in plot
    return gca().plot(
  File "D:\ProgramData\Miniconda3_32\lib\site-packages\matplotlib\pyplot.py", li
ne 2532, in gca
    return gcf().gca(**kwargs)
  File "D:\ProgramData\Miniconda3_32\lib\site-packages\matplotlib\pyplot.py", li
ne 854, in gcf
    return figure()
  File "D:\ProgramData\Miniconda3_32\lib\site-packages\matplotlib\pyplot.py", li
ne 800, in figure
    FigureClass=FigureClass, **kwargs)
  File "D:\ProgramData\Miniconda3_32\lib\site-packages\matplotlib\pyplot.py", li
ne 316, in new_figure_manager
    return _backend_mod.new_figure_manager(*args, **kwargs)
  File "D:\ProgramData\Miniconda3_32\lib\site-packages\matplotlib\backend_bases.
py", line 3545, in new_figure_manager
    return cls.new_figure_manager_given_figure(num, fig)
  File "D:\ProgramData\Miniconda3_32\lib\site-packages\matplotlib\backends\_back
end_tk.py", line 883, in new_figure_manager_given_figure
    window = tk.Tk(className="matplotlib")
  File "D:\ProgramData\Miniconda3_32\lib\tkinter\__init__.py", line 2018, in __i
nit__
    baseName = os.path.basename(sys.argv[0])
IndexError: list index out of range
请按任意键继续. . .

这个sys.argv[0] 代表当前python文件,由于是c++直接调用,这个sys.argv[]为空。

于是我在一个python脚本中将这个值打印出来:是一个如如'D:/code/chezhe/chezhe.py'文件名称

 

于是我尝试在c++文件中手动将sys.argv添加一个文件(随便写一个文件路径)。

PyRun_SimpleString("import os"); /*调用python文件*/
PyRun_SimpleString("sys.argv.append('D:/code/chezhe/chezhe.py')"); /*调用python文件*/

之后运行:成功!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

明心见性者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值