[英]g++ - Python.h: No such file or directory
我正在嘗試制作一個 C++ 腳本來運行一些簡單的 Python 代碼:
// t.cpp
#include <Python.h>
int main(int argc, char* argv[])
{
Py_Initialize();
PyRun_SimpleString("print('TEST PASSED')");
Py_Finalize();
return 0;
}
運行g++ t.cpp
,出現錯誤:
t.cpp:1:20: 致命錯誤: Python.h: 沒有那個文件或目錄
編譯終止
我發現了許多類似的問題,都是針對 IDE 或其他開發軟件的,或者通過安裝python3-dev
解決的。 python3-dev
包已經安裝,我什至嘗試在編譯時手動包含頭文件:
g++ t.cpp -I ~/.virtualenvs/MainEnv/include/python3.5m/Python.h
g++ t.cpp -I /usr/include/python3.5m/Python.h
兩者都不改變任何東西。
我該如何解決這個錯誤?
更新:我發現使用g++ t.cpp -I /usr/include/python3.5/
似乎包含標題,但隨后它遇到了更多錯誤:
t.cpp:(.text+0x10): 未定義的對 `Py_Initialize' 的引用
t.cpp:(.text+0x1f): 對`PyRun_SimpleStringFlags' 的未定義引用
t.cpp:(.text+0x24): 未定義的對 `Py_Finalize' 的引用
collect2: 錯誤: ld 返回 1 個退出狀態
我在我的 github 上設置了一個類似的例子
g++ t.cpp
缺少一些東西:
-I/path/to/headers/
)-lpython3.5m
) 您還可以使用pkg-config
檢索這些標志
$ pkg-config python-3.5 --libs --cflags
-I/usr/include/python3.5m -I/usr/include/x86_64-linux-gnu/python3.5m -lpython3.5m
你的命令行應該看起來像g++ -I/usr/include/python3.5m t.cpp -lpython3.5m
#include <...>
用於編譯器附帶的包含。
對任何其他包含使用#include "Python.h"
。
運行以下命令來編譯您的代碼:
mytest.cpp :
#include <Python.h>
int main(int argc, char* argv[])
{
Py_Initialize();
PyRun_SimpleString("print('TEST PASSED')");
Py_Finalize();
return 0;
}
編譯:
$ g++ mytest.cpp `pkg-config python3-embed --libs --cflags` -o mytest
$ ./mytest
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.