我試圖在使用Python.h
的C++程序中運行Python腳本。因爲這個C++程序可以安裝在/usr/bin
中(make install
),所以它需要能夠在它自己的目錄(如果沒有安裝)或者在PATH環境變量的目錄之一中找到Python腳本。從C++中的PATH導入Python腳本
我曾嘗試做:
PyObject *pName = PyString_FromString(scriptName); // scriptName is "file.py" as a char*
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append(\".\")");
PyObject *pModule = PyImport_Import(name); // not working because absolute path only
//since Python 2.7 ?
和
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append(\".\")");
PyObject *pModule = PyImport_ImportModuleEx(scriptName, NULL, NULL, NULL);
但都離開我pModule == NULL
此調用後,但如果我運行從自己的目錄中的C++模塊工作。
非常感謝您的幫助
幾個問題: 1)請問應用程序是從包含python腳本的目錄運行嗎? 2)您是否在Py_Initialize之前嘗試調用PySys_SetArgvEx,並設置應用程序路徑? –
1)絕對地,'make'將C++可執行文件放在Python腳本所在的同一目錄中。 make install將C++可執行文件和Python腳本複製到'usr/bin'(或者用戶想要安裝的地方)。 2)我還沒有,主要是因爲這部分C++程序與'main'以及原來的'argc'和'argv'變量相距很遠。我需要這樣做來設置應用程序路徑嗎? – wrousseau