[英]I have Python on my Ubuntu system, but gcc can't find Python.h
我在學校的電腦上,所以我無法安裝任何東西。
我正在嘗試創建可以在 Python 中運行的 C 代碼。 看來我在上面找到的所有文章都需要您使用
#include <Python.h>
我這樣做,但是當我編譯它抱怨沒有這樣的文件或目錄。
計算機有 Python(至少它在終端中有python
命令,我們可以運行任何我們想要的 Python 代碼)。
我在終端中輸入了locate Python.h
,但什么也沒找到。
我有兩個問題:
我可以編寫可以在沒有Python.h
的情況下在 Python 中調用的 C 代碼嗎?
我錯過了什么嗎,計算機實際上有Python.h
嗎?
您需要包含Python.h
的python-dev
包
在 Ubuntu 上,您需要安裝一個名為python-dev
的包。 由於這個包似乎沒有安裝( locate Python.h
沒有找到任何東西)並且你不能自己在系統范圍內安裝它,我們需要一個不同的解決方案。
您可以將 Python 安裝在您的主目錄中——您不需要任何特殊權限來執行此操作。 如果您被允許使用網絡瀏覽器並運行 gcc,這應該對您有用。 為此
下載源壓縮包。
解壓
tar xjf Python-2.7.2.tar.bz2
構建和安裝
cd Python-2.7.2 ./configure --prefix=/home/username/python --enable-unicode=ucs4 make make install
現在,您已經在主目錄中安裝了完整的 Python。 編譯時將-I /home/username/python/include
傳遞給 gcc 以使其知道Python.h
。 鏈接時傳遞-L /home/username/python/lib
和-lpython2.7
。
您必須使用#include "python2.7/Python.h"而不是#include "Python.h" 。
對於 Ubuntu 15.10 和 Python 3,由於它們沒有Python.h
但具有管理權限,因此提出了這個問題,以下可能會解決它:
sudo apt-get install python-dev
sudo apt-get install python3-dev
sudo apt-get install libpython3-dev
sudo apt-get install libpython3.4-dev
sudo apt-get install libpython3.5-dev
在 ubuntu 上,您只需在終端中鍵入sudo apt-get install python-dev -y
即可安裝 python-dev 包。
我在 ubuntuforums ( ubuntuforums ) 中找到了答案,您可以將其添加到您的 gcc '$(python-config --includes)'
gcc $(python-config --includes) urfile.c
頭文件現在由libpython2.7-dev提供。
您可以使用packages.ubuntu.com 上的搜索表單來查找提供Python.h
的包。
您需要安裝 python-dev。
對於 Ubuntu:
sudo apt-get install python-dev # for python2.x installs sudo apt-get install python3-dev # for python3.x installs
有關更多發行版,請參閱 -
https://stackoverflow.com/a/21530768/6841045
我在 CentOS 7 機器上嘗試構建一個非常古老的omniORB 副本時遇到了同樣的問題。 通過安裝python開發庫解決了這個問題:
# yum install python-devel
這將 Python.h 安裝到:
/usr/include/python2.7/Python.h
發生這種情況是因為Python.h
不在默認包含文件夾(即/usr/include/
)中。
安裝 Python-dev 可能會有所幫助:
$ sudo apt-get install python-dev
但大多數情況下,問題仍然存在,因為開發包是在包含文件夾本身( /usr/include/python2.7
或python3
)內的單獨文件夾中制作的。
因此,您應該使用gcc
中的-I
選項指定庫文件夾,或者通過創建將這些文件夾內的所有內容指向外部的軟鏈接(我更喜歡前一個選項)。
在gcc
中使用-I
選項:
$ gcc -o hello -I /usr/include/python2.7 helloworld.c
創建軟鏈接:
$ sudo ln -sv /usr/include/python2.7/* /usr/include/
locate Python.h
如果輸出為空,則查找您的python版本
python --version
假設它是 Xx 即 2.7 或 3.6、3.7、3.8 然后使用相同的版本安裝 python 的頭文件和靜態庫
sudo apt-get install pythonX.x-dev
這意味着您沒有為 python dev 安裝庫。
如果您使用的是 Linux 操作系統,則可以通過以下單獨的命令解決此問題:
Ubuntu(Debian):
sudo apt-get install python-dev
(Py2) 或sudo apt-get install python3-dev
(Py3)
Rehat (CentOS):
yum install python-devel
沒有一個答案對我有用。 如果您在 Ubuntu 上運行,您可以嘗試:
使用python3:
sudo apt-get install python3 python-dev python3-dev \
build-essential libssl-dev libffi-dev \
libxml2-dev libxslt1-dev zlib1g-dev \
python-pip
使用 Python 2:
sudo apt-get install python-dev \
build-essential libssl-dev libffi-dev \
libxml2-dev libxslt1-dev zlib1g-dev \
python-pip
轉到 Synaptic 包管理器。 重新加載 -> 搜索 python -> 選擇你想要的 python 包 -> 提交 -> 為我安裝 Works ;)
沒錯,你需要安裝的包是python-dev。
我認為正確的方法是python3-config --include
,如果你看一下cat $(which python3-config)
,你會發現它在后台使用sysconfig
模塊。 因此,我認為最好的解決方案是使用:
>>> import sysconfig
>>> sysconfig.get_path('include')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.