0
私はPython 3.3を使用しています。 私はC++ Qtコードを使用しており、Pythonをその中に埋め込んでいます。 Python 3のC Python APIを使用して1つのPythonファイルを実行したい。C++コードから実行するPythonファイル
以下は、ファイルを読み込んでQtを使用して実行するサンプルコードです。
FILE *cp = fopen("/tmp/my_python.py", "r");
if (!cp)
{
return;
}
Py_Initialize();
// Run the python file
#ifdef PYTHON2
PyObject* PyFileObject = PyFile_FromString("/tmp/my_python.py", (char *)"r");
if (PyRun_SimpleFile(PyFile_AsFile(PyFileObject), "/tmp/my_python.py") != 0)
setError(tr("Failed to launch the application server, server thread exiting."));
#else
int fd = fileno(cp);
PyObject* PyFileObject = PyFile_FromFd(fd, "/tmp/my_python.py", (char *)"r", -1, NULL, NULL,NULL,1);
if (PyRun_SimpleFile(fdopen(PyObject_AsFileDescriptor(PyFileObject),"r"), "/tmp/my_python.py") != 0)
setError(tr("Failed to launch the application server, server thread exiting."));
#endif
Py_Finalize();
Python2ではすべて正常に動作しています。しかし、python3(#elseパート)はウィンドウの下では動作しません。アプリケーションがクラッシュしています。私は行ごとに読んで実行したくありません。
Python3を使ってC++アプリケーションでpythonファイルを実行する方法を教えていただけますか?いくつかの疑似コードやリンクが役立ちます。
ありがとうございました。
なぜあなたは単に 'cp'を渡す代わりに、巧妙になろうとしていませんか? –
あなたは "if(PyRun_SimpleFile(cp、" /tmp/my_python.py "))を呼び出すと言っていますか?これは私も同じ結果を試しましたが、 – Neel
https://docs.python.org/3/c- api/veryhigh.html#c.PyRun_SimpleFile –