簡體   English   中英

從C ++中的PATH導入Python腳本

[英]Python script import from PATH in C++

我正在嘗試使用Python.h在C ++程序中運行Python腳本。 因為此C ++程序可以make install/usr/binmake install ),所以它需要能夠在其自己的目錄(如果未安裝)或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 ++模塊,它們會起作用。

非常感謝你的幫助

"." 僅當C ++ python腳本的根目錄是進程的當前工作目錄時 ,它才用作python腳本的路徑。

如果你的程序從別的地方開始(通過PATH或/路徑/到/ A /程序),那么唯一可靠的方式找到你的腳本是用用你argv[0] PARAM從main

找到正確的路徑后,有兩種使用方法:

  1. 傳遞給sys.path.append
  2. 使用chdir (來自unistd.h)在該目錄中切換工作目錄 ,然后可以傳遞"." sys.path.append chdir將影響整個過程,但是優點是您可以直接在main

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM