【发布时间】:2021-07-09 00:08:07
【问题描述】:
我正在尝试在我的 c++ 程序中嵌入一个 python 脚本文件。我已经包含了Python.h,它按预期工作。
#include "MathFunction.h"
#include <Python.h>
int main() {
char filename[] = "TestPy.py";
Py_Initialize();
FILE *fp;
fp = _Py_fopen(filename, "r");
PyRun_SimpleFile(fp, filename);
Py_Finalize();
return 0;
}
注意:我尝试使用fopen,而不是_Py_fopen,但结果相同。
但是,当我运行此代码时,我得到一个退出代码 0(好),但我的 TestPy.py 没有输出,它有:
import matplotlib.pyplot as plt
l1 = [1, 2, 3, 4]
l2 = [3, 6, 4, 5]
plt.plot(l1)
plt.show()
我期待一个绘图打开,就像在 Python 中本地运行它时一样。
即使python 文件很简单
Print("Hello!"), I don't see the print statement in the console.
我没有得到任何控制台输出。 虽然,当我使用
PyRun_SimpleString("print('Hello!')");
正如预期的那样,我得到的不是PyRun_SimpleFile,而是控制台输出“Hello!”。这可能是什么原因?
TestPy.py 与 c++ 文件在同一目录中。
【问题讨论】:
-
使用
matplotlib的第二个脚本确实会产生任何控制台输出——你期待什么? -
@martineau 我稍微编辑了我的帖子以反映我的期望,谢谢。我希望绘图能够像在 Python 中一样打开,但我也很困惑为什么执行简单的 Print() 不会输出到控制台。
-
非常适合我,程序会打开一个带有绘图的窗口。
-
@n.'pronouns'm。我正在 Windows 上使用 CLion 构建/运行...这与它有什么关系吗?你在 Linux 上吗?
-
"TestPy.py 与 c++ 文件在同一目录中。" C++ 文件的位置无关紧要。确实,大多数项目在许多不同的目录中都有许多 C++ 文件,它们怎么可能都相关?您需要熟悉当前工作目录的概念。
TestPy.py是一个相对路径。相对于什么?到当前工作目录。因此,您需要查看您的项目设置并确定运行程序时当前的工作目录是什么。