我正在按照教程從the python docs的C++程序調用python代碼。如何調用需要導入包的python文件?
嘗試調用multiply
示例時,一切正常。現在,如果我添加一行到Python源代碼導入庫,可以說openpyxl
,
from openpyxl import load_workbook
我從蟒蛇
ImportError: No module named openpyxl
我想收到一個錯誤,如果我導入系統庫,我不會有任何問題,但如果我嘗試導入datetime
,我也會遇到錯誤。
我沒有任何錯誤,如果我從python控制檯導入文件。我的系統中安裝了openpyxl
庫。
所以我的問題是:如何導入需要導入包的python源代碼?
編輯:好吧,我忘了提及一些事情,我沒有對你們完全誠實,對不起。
試圖運行我碰到一個問題的例子:我不能讓蟒蛇發現我multiply.py
文件,行PyImport_Import
總是返回null
。
我的解決方案是通過使用PySys_SetPath
來添加我知道我的Python源代碼的路徑。問題是我剛剛意識到這個函數不會附加一個新的目錄,它只是覆蓋PYTHONPATH
。所以現在python可以找到multiply.py
,但絕對是別的。
當然,我已經刪除了這行,但現在我有另一個問題,爲什麼python無法找到我的源,如果該文件只是在C++編譯的程序相同的目錄?
的,我意識到,我的sys.path
從我的Python控制檯是有點不同的路徑在我的嵌入式Python表明:第一個曾在列表中的一個空字符串''
的開始。我不是Python專家,但是當我將該行添加到我的路徑中時,我可以導入multiply.py
,所以看起來是我無法導入相對於我的可執行文件定位的模塊的原因是此空路徑的缺失 - 但仍然不知道它是什麼意思 - 。
我得感謝@ paul-evans,他給了我添加路徑來查找我的文件的想法。
您的系統中是否安裝了多個python版本? – SethMMorton
我有python 2.7,python 3和python 3.3。我很確定我通過調用'PyRun_SimpleString(「import sys \ nprint(sys.version)」)來使用2.7版本;' – camolin3
'PYTHONPATH'變量只能在'site.py'中讀取,所以如果由於某種原因,你的解釋器沒有閱讀這個文件,你的'PYTHONPATH'將被忽略。 – SethMMorton