etc./StackOverFlow

치명적인 오류: Python.h: 해당 파일 또는 디렉터리가 없습니다.

청렴결백한 만능 재주꾼 2022. 3. 17. 08:08
반응형

질문자 :Mohanad Y.


C 확장 파일을 사용하여 공유 라이브러리를 빌드하려고 하지만 먼저 아래 명령을 사용하여 출력 파일을 생성해야 합니다.

 gcc -Wall utilsmodule.c -o Utilc

명령을 실행한 후 다음 오류 메시지가 나타납니다.

 > utilsmodule.c:1:20: fatal error: Python.h: No such file or directory compilation terminated.

인터넷을 통해 제안된 모든 솔루션을 시도했지만 문제가 여전히 존재합니다. Python.h 문제가 없습니다. 내 컴퓨터에서 파일을 찾을 수 있었습니다.



python dev용 헤더 파일과 정적 라이브러리를 제대로 설치하지 않은 것 같습니다. 패키지 관리자를 사용하여 시스템 전체에 설치하십시오.

apt ( Ubuntu, Debian... ):

 sudo apt-get install python-dev # for python2.x installs sudo apt-get install python3-dev # for python3.x installs

yum ( CentOS, RHEL... ):

 sudo yum install python-devel # for python2.x installs sudo yum install python3-devel # for python3.x installs

dnf ( 페도라... ):

 sudo dnf install python2-devel # for python2.x installs sudo dnf install python3-devel # for python3.x installs

zypper ( openSUSE... ):

 sudo zypper in python-devel # for python2.x installs sudo zypper in python3-devel # for python3.x installs

apk ( 알파인... ):

 # This is a departure from the normal Alpine naming # scheme, which uses py2- and py3- prefixes sudo apk add python2-dev # for python2.x installs sudo apk add python3-dev # for python3.x installs

apt-cyg ( Cygwin... ):

 apt-cyg install python-devel # for python2.x installs apt-cyg install python3-devel # for python3.x installs

wim

Ubuntu에서 Python 3을 실행 중이었고 설치해야했습니다.

 sudo apt-get install python3-dev

python3에 연결되지 않은 Python 버전을 사용하려면 연결된 python3.x-dev 패키지를 설치하세요. 예를 들어:

 sudo apt-get install python3.5-dev

FreshPow

특히 Python 3.7Ubuntu의 경우

sudo apt install libpython3.7-dev

. 어느 시점에서 이름이 pythonm.n-dev 에서 이것으로 변경되었다고 생각합니다.

Python 3.6, 3.8 및 3.9의 경우 유사하게:

sudo apt install libpython3.6-dev

sudo apt install libpython3.8-dev

sudo apt install libpython3.9-dev

ijoseph

당신이해야 할 두 가지.

Python용 개발 패키지를 설치합니다. Debian/Ubuntu/Mint의 경우 다음 명령으로 완료됩니다.

 sudo apt-get install python-dev

두 번째는 포함 파일이 기본적으로 포함 경로에 없고 Python 라이브러리가 기본적으로 실행 파일과 연결되어 있지 않다는 것입니다. 다음 플래그를 추가해야 합니다(Python 버전을 적절하게 교체).

 -I/usr/include/python2.7 -lpython2.7

즉, 컴파일 명령은 다음과 같아야 합니다.

 gcc -Wall -I/usr/include/python2.7 -lpython2.7 utilsmodule.c -o Utilc

vartec

Fedora에서 Python 2에 대해 다음을 실행합니다.

 sudo dnf install python2-devel

그리고 파이썬 3의 경우:

 sudo dnf install python3-devel

ravi.zombie

tox 를 사용하여 여러 버전의 Python에서 테스트를 실행하는 경우 테스트 중인 각 Python 버전에 대해 Python 개발 라이브러리를 설치해야 할 수 있습니다.

 sudo apt-get install python2.6-dev sudo apt-get install python2.7-dev etc.

Christian Long

Python 개발 파일이 OS와 함께 제공되는지 확인하십시오.

라이브러리를 하드 코딩하고 경로를 포함하면 안 됩니다. 대신 특정 시스템에 대한 올바른 옵션을 출력하는 pkg-config를 사용하십시오.

 $ pkg-config --cflags --libs python2 -I/usr/include/python2.7 -lpython2.7

gcc 라인에 추가할 수 있습니다.

 gcc -Wall utilsmodule.c -o Utilc $(pkg-config --cflags --libs python2)

sleblanc

Cygwin을 위한 솔루션

사용 중인 Python 버전에 따라 python2-devel 또는 python3-devel 패키지 를 설치해야 합니다.

Cygwin.com 에서 32비트 또는 64비트 setup.exe (설치에 따라 다름)를 사용하여 빠르게 설치할 수 있습니다.

예( setup.exe 의 파일 이름 및 Python의 주요 버전 수정):

 $ setup.exe -q --packages=python3-devel

명령 줄에서 Cygwin의 패키지를 설치하는 몇 가지 옵션에 대한 다른 답변 을 확인할 수도 있습니다.


David Ferenczy Rogožan

나를 위해 이것을 변경하면 효과가있었습니다.

 #include <python2.7/Python.h>

/usr/include/python2.7/Python.h 파일을 찾았고 /usr/include 가 이미 포함 경로에 python2.7/Python.h 로 충분해야 합니다.

대신 명령줄에서 포함 경로를 추가할 수도 있습니다 - gcc -I/usr/lib/python2.7 python2.7 (@erm3nda에게 감사드립니다).


sashoalm

AWS API(centOS)에서

 yum install python27-devel

yespbs

python34를 실행하는 AWS EC2 설치:

sudo yum install python34-devel


parsethis

3.6 python(지금 edge)과 함께 virtualenv를 사용하는 경우 일치하는 python 3.6 dev sudo apt-get install python3.6-dev . 그렇지 않으면 sudo python3-dev 실행하면 python dev 3.3.3-이 설치됩니다. 1, 문제가 해결되지 않습니다.


Guillaume Cisco

제 경우 우분투에서 수정한 것은 libpython-all-dev (또는 Python 3을 사용하는 경우 libpython3-all-dev


Oriol Nieto

같은 상황은 아니지만 저에게도 효과적이며 이제 Python3.5에서 SWIG 를 사용할 수 있습니다.

나는 컴파일하려고했다 :

 gcc -fPIC -c existe.c existe_wrap.c -I /usr/include/python3.5m/

Python 2.7에서는 내 버전 3.5가 아니라 잘 작동합니다.

Existing_wrap.c:147:21: 치명적인 오류: Python.h: 기존 파일 아카이브 또는 디렉토리 컴파일이 종료되지 않았습니다.

Ubuntu 16.04 설치에서 실행한 후:

 sudo apt-get install python3-dev # for python3.x installs

이제 Python3.5 문제 없이 컴파일할 수 있습니다.

 gcc -fPIC -c existe.c existe_wrap.c -I /usr/include/python3.5m/

Hugo L.M

이 문제를 해결하고 하나의 명령으로 .so 파일을 생성했습니다.

 gcc -shared -o UtilcS.so -fPIC -I/usr/include/python2.7 -lpython2.7 utilsmodule.c

Mohanad Y.

우분투에 coolprop을 설치할 때도 이 오류가 발생했습니다.

Python 3.6이 설치된 우분투 16.04의 경우

 sudo apt-get install python3.6-dev

gcc lib를 설치/업데이트해 보십시오.

 sudo apt-get install gcc

Wreeecks

apt 파일을 시도하십시오. 누락된 파일이 있는 패키지 이름을 기억하기 어렵습니다. 모든 패키지 파일에 일반적이며 유용합니다.

예를 들어:

 root@ubuntu234:~/auto# apt-file search --regexp '/Python.h$' pypy-dev: /usr/lib/pypy/include/Python.h python2.7-dbg: /usr/include/python2.7_d/Python.h python2.7-dev: /usr/include/python2.7/Python.h python3.2-dbg: /usr/include/python3.2dmu/Python.h python3.2-dev: /usr/include/python3.2mu/Python.h root@ubuntu234:~/auto#

이제 어느 것을 선택할지 전문가가 추측할 수 있습니다.


Venfah Nazir

CentOS 7의 경우:

 sudo yum install python36u-devel

여러 VM에 python3.6을 설치하는 방법은 다음과 같습니다. https://www.digitalocean.com/community/tutorials/how-to-install-python-3-and-set-up-a-local-programming- environment-on-centos-7 그런 다음 mod_wsgi를 빌드하고 python3.6 virtualenv와 함께 작동하도록 할 수 있었습니다.


Steve G

OpenSuse 동지들에게:

 sudo zypper install python3-devel

kmonsoor

Amazon Linux에서 Python 3.6을 사용하는 경우(RHEL을 기반으로 하지만 여기에 제공된 RHEL 답변이 작동하지 않음):

 sudo yum install python36-devel

Yigal

  1. 운영 체제와 함께 제공되는 Python이 함께 제공되지 않는 경우 운영 체제에 Python 개발 파일을 설치해야 합니다. 이 질문에 대한 많은 답변은 다양한 시스템에서 이것이 달성될 수 있는 무수한 방법을 보여줍니다.

  2. 그렇게 했을 때 문제는 컴파일러에게 위치와 컴파일 방법을 알려주는 것입니다. python-config 라는 프로그램이 함께 제공됩니다. 컴파일을 위해서는 --includes 출력이 필요하고 Python 라이브러리에 대해 프로그램을 연결하려면(Python을 프로그램에 포함) --ldflags 출력이 필요합니다. 예시:

     gcc -c mypythonprogram.c $(python3-config --includes) gcc -o program mypythonprogram.o $(python3-config --ldflags)

python-config 프로그램은 Python 버전의 이름을 따서 명명할 수 있습니다. 예를 들어 Debian, Ubuntu에서는 python3-config 또는 python3.6-config 로 명명할 수 있습니다.


Antti Haapala

물론 python-dev 또는 libpython-all-dev apt ) install 의 첫 번째 항목이지만 제 경우처럼 도움이 되지 않으면 sudo apt-get install libffi-dev 외부 함수 인터페이스 패키지를 설치하는 것이 좋습니다. sudo apt-get install libffi-devsudo pip install cffi .

c/_cffi_backend.c:2:20: fatal error: Python.h: No such file or directory 오류가 표시되는 경우 도움이 됩니다.


Huge

이 오류는 Python3.6이 설치된 CentOS 7에 ctds를 설치하려고 할 때 발생했습니다. yum install python34-devel 포함하여 여기에 언급된 모든 트릭을 수행했습니다. 문제는 Python.h 가 /usr/include/python3.4m에서 발견 /usr/include/python3.4m but not in /usr/include/python3.6m . --global-option 을 사용하여 dir ( pip3.6 install --global-option=build_ext --global-option="--include-dirs=/usr/include/python3.4m" ctds )을 포함하도록 지정하려고 했습니다. . 이로 인해 lpython3.6m 를 연결할 때 lpython3.6m을 찾을 수 없습니다.

마지막으로 작동한 것은 Python3.6용 개발 환경을 수정하는 것이었습니다. include 및 libs로 수정해야 합니다.

 yum -y install https://dl.iuscommunity.org/pub/ius/stable/CentOS/7/x86_64/python36u-libs-3.6.3-1.ius.centos7.x86_64.rpm

Python.h는 gcc의 포함 경로에 있어야 합니다. 어떤 버전의 python이 사용되든, 예를 들어 3.6인 경우 일반적으로 /usr/include/python3.6m/Python.h


Babu Arunachalam

Python.h를 찾으십시오.

 gemfield@ThinkPad-X1C:~$ locate Python.h /home/gemfield/anaconda3/include/python3.7m/Python.h /home/gemfield/anaconda3/pkgs/python-3.7.6-h0371630_2/include/python3.7m/Python.h /usr/include/python3.8/Python.h

찾을 수 없으면 python-dev 또는 python3-dev를 설치하십시오. 그렇지 않으면 컴파일러에 대한 올바른 헤더 경로를 포함합니다.

 g++ -I/usr/include/python3.8 ...

gemfield

제거하려고 할 때 종종 나타납니다 python3.5 설치 python3.6 .

따라서 python3 ( python3 -V => python3.6 )을 사용하여 일부 패키지에 필요한 python3.5 헤더를 설치할 때 이 오류가 나타납니다.

python3.6-dev 모듈을 설치하여 해결하십시오.


dphans

이러한 솔루션 중 어느 것도 저에게 효과가 없었기 때문에 여기에 또 다른 솔루션이 있습니다. 참고로 저는 Python 3.6용 Amazon Linux AMI 기반 Docker 이미지에 무언가 pip install

비도커 솔루션:

 # Install python3-devel like everyone says yum -y install python36-devel.x86_64 # Find the install directory of `Python.h` rpm -ql python36-devel.x86_64 | grep -i "Python.h" # Forcefully add it to your include path C_INCLUDE_PATH='/usr/include/python3.6m' export C_INCLUDE_PATH

도커 솔루션:

 # Install python3-devel like everyone says RUN yum -y install python36-devel.x86_64 # Find the install directory of `Python.h`, for me it was /usr/include/python3.6m RUN rpm -ql python36-devel.x86_64 | grep -i "Python.h" && fake_command_so_docker_fails_and_shows_us_the_output # Since the previous command contains a purposeful error, remove it before the next run # Forcefully add it to your include path ARG C_INCLUDE_PATH='/usr/include/python3.6m'

참고: C++를 컴파일할 때 오류가 발생하면 CPLUS_INCLUDE_PATH 사용하세요.


serg06

Python.h 가 컴파일러의 기본 포함 경로에 없다는 것을 의미합니다. 시스템 전체에 설치했습니까 아니면 로컬에 설치했습니까? 당신의 OS는 무엇입니까?

-I<path> 플래그를 사용하여 컴파일러가 헤더를 찾아야 하는 추가 디렉토리를 지정할 수 있습니다. -l<name> 을 사용하여 연결할 라이브러리를 찾을 수 있도록 -L<path> 로 후속 조치를 취해야 할 것입니다.


Kos

간혹 python-dev를 설치한 후에도 오류가 지속되는 경우가 있는데, 'gcc'가 누락된 경우 오류를 확인하십시오.

https://stackoverflow.com/a/21530768/8687063에 명시된 대로 먼저 다운로드한 다음 gcc를 설치합니다.

apt(Ubuntu, Debian...)의 경우:

 sudo apt-get install gcc

yum의 경우(CentOS, RHEL...):

 sudo yum install gcc

dnf(페도라...):

 sudo dnf install gcc

지퍼(openSUSE...)의 경우:

 sudo zypper in gcc

APK의 경우(알파인...):

 sudo apk gcc

HimanshuGahlot

이 문제는 다른 Python 버전이 설치되어 있고 시스템 버전이 아닌 pip를 사용하는 경우에도 발생할 수 있습니다. 이 경우 비시스템 pip는 올바른 버전의 Python 헤더를 찾지 못합니다.

응용 프로그램과 함께 번들로 제공되는 Python용 패키지 를 pip 설치 하려고 할 때 발생했습니다. 시스템의 파이썬이 아니 어서 apt install pythonXX-dev 가 작동하지 않았습니다.

이 경우 해결책은 올바른 파이썬 헤더를 찾는 것입니다.

 find / -iname 'Python.h'

출력에서 시스템 python 헤더를 볼 수 있으며, 예를 들어 다음과 같이 찾고 있는 헤더를 볼 수 있습니다.

 /usr/include/python3.7m/Python.h /usr/include/python3.6m/Python.h /home/ubuntu/workspace/blender-git/lib/linux_centos7_x86_64/python/include/python3.7m/Python.h /home/ubuntu/miniconda3/pkgs/python-3.8.5-h7579374_1/include/python3.8/Python.h /home/ubuntu/miniconda3/pkgs/python-3.7.0-h6e4f718_3/include/python3.7m/Python.h /home/ubuntu/miniconda3/include/python3.8/Python.h /home/ubuntu/miniconda3/envs/sim/include/python3.7m/Python.h /home/ubuntu/src/blender-deps/Python-3.7.7/Include/Python.h /opt/lib/python-3.7.7/include/python3.7m/Python.h

그런 다음 pip에서 호출할 때 gcc에서 사용할 컴파일러 플래그를 설정할 수 있습니다. 광산은 /home/ubuntu/workspace/blender-git/lib/linux_centos7_x86_64/python/include/python3.7m/Python.h 였으므로 다음을 수행했습니다.

 export CPPFLAGS=-I/home/ubuntu/src/blender-deps/Python-3.7.7/Include pip install <package>

Milo

cmake를 사용하여 프로젝트를 빌드하는 경우 이 예제를 사용할 수 있습니다.

 cmake_minimum_required(VERSION 2.6) project(demo) find_package(PythonLibs REQUIRED) include_directories(${PYTHON_INCLUDE_DIRS}) add_executable(demo main.cpp) target_link_libraries(demo ${PYTHON_LIBRARIES})

KingKong

출처 : http:www.stackoverflow.com/questions/21530577/fatal-error-python-h-no-such-file-or-directory

반응형