簡體   English   中英

我的 Ubuntu 系統上有 Python,但 gcc 找不到 Python.h

[英]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 ,但什么也沒找到。

我有兩個問題:

  1. 我可以編寫可以在沒有Python.h的情況下在 Python 中調用的 C 代碼嗎?

  2. 我錯過了什么嗎,計算機實際上有Python.h嗎?

您需要包含Python.hpython-dev

在 Ubuntu 上,您需要安裝一個名為python-dev的包。 由於這個包似乎沒有安裝( locate Python.h沒有找到任何東西)並且你不能自己在系統范圍內安裝它,我們需要一個不同的解決方案。

您可以將 Python 安裝在您的主目錄中——您不需要任何特殊權限來執行此操作。 如果您被允許使用網絡瀏覽器並運行 gcc,這應該對您有用。 為此

  1. 下載源壓縮包

  2. 解壓

    tar xjf Python-2.7.2.tar.bz2
  3. 構建和安裝

    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.7python3 )內的單獨文件夾中制作的。

因此,您應該使用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.

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