2014-01-24 1 views
9

python-dev가 설치되지 않았기 때문에 많은 사람들이 python 패키지를 pip와 함께 설치하는 데 어려움이 있습니다. 주로 오류 :python-dev를 설치해야합니까?

fatal error: Python.h: No such file or directory 

그래서 질문 : python-dev가 pip에 필수 종속성이되어야합니까? 아니면 pip와 함께 설치되는 특정 패키지에 대해서만 문제가 있습니까? 그렇다면 모듈을 설치할 때 사용자가 오류가 발생하지 않도록하기위한 특정 단계가 있습니까? 나는이 사실에 StackOverflow에 속하지만 경우 내가 틀렸다 생각하지 않는다

+0

이것은 특정 (및 지정되지 않은) 배포판의 Python 관련 맞춤 패키지에 관한 문제이며 Python이나 프로그래밍에 관한 문제는 아닙니다. 그래서 그것은 수퍼 유저 또는 AskUbuntu와 같은 배포판 특정 사이트 또는 배포판의 버그 추적기에 대한 버그 보고서에 속한다고 생각합니다. – abarnert

+0

@mata :하지만 배포판이 파이썬을 분리하지 않는 한'python-dev' 같은 것이 없습니다. Python을 직접 빌드하고 설치하거나 python.org에서 설치 프로그램을 실행하면'Python.h'가 생깁니다. 또한 그의 문제는 컴파일러가 없다는 것이 아니라 컴파일러에서 오류가 발생하는 것입니다. – abarnert

답변

13

...

먼저, python-dev는 우분투 나 페도라 또는 다른 배포판 일의, 파이썬 일이 아니다. Python을 다운로드, 빌드 및 설치하거나 python.org에서 이진 설치 프로그램을 실행하면 Python.h이 적절한 위치에 설치됩니다. 많은 리눅스 배포판은 패키지를 하위 패키지로 나눠서 -dev 또는 이와 비슷한 패키지로 만들기 위해 필요한 물건을 옮기는 것을 좋아합니다. 파이썬에 그렇게하는 데는 아무런 문제가 없지만 여전히 배포판의 일부입니다.

둘째, 모든 패키지를 빌드 할 때 Python.h은 필요하지 않으며 C 확장 모듈을 포함하는 패키지 만 빌드하면됩니다. 많은 패키지가 pure-Python이며 확장 모듈이 없기 때문에 배포판의 pip 패키지에는 python-dev 패키지가 필요하지 않습니다. (배포판의 pip 패키지가 C 컴파일러를 필요로하지 않는 것과 같은 방식으로)

세 번째로 python-pip 또는 유사한 패키지를 제공하는 대부분의 배포판은 인기있는 패키지 패키지를 제공합니다. 그런 식으로 설치하면 python-dev (및 C 컴파일러)이 필요하지 않습니다. 바이너리 패키지이거나 필요하기는하지만 종속성 (rpm, deb 등)으로 끌어 당겨지기 때문입니다. 모두 "빌드"및 "실행"종속성을 별도로 지정하는 방법이 있습니다.

pip 패키지 관리자의 뒤를 따라 패키지를 설치하려고하면 패키지 관리자가 어떤 패키지가 어떤 의존성이 필요한지 알 수 없지만 pip은 알려줄 수 있습니다 파이썬 패키지 의존성에 관해서는, 이것을 시행 할 것이 없다.

+1

대단히 감사합니다.이 답변은 많은 통찰력을 제공했습니다. Python-dev는 배포판 관련 패키지 (또는 우분투 양식에 게시했을 것입니다!)라고 인식하지 못했습니다. Python.h는 C 확장에만 필요합니다 (따라서 .h, 오른쪽?) 이 질문에 대한 나의 주된 목적은 프로그래밍과 파이썬에 익숙하지 않은 많은 사람들이 파이썬 패키지를 설치하는 것이 가장 좋지만, 패키지 관리자를 포기하고 사용할 수 있다는 것입니다. 초보자에게는 부러진 것처럼 보입니다. 이 인식은 사용자의 잘못이 아니라 파이썬/배포판 상호 작용을 개선 할 수있는 기회입니다! – hansonap

+0

@hansonap : 필자는 제 의견을 말할 수 있습니다 (Python 3.4+에는'pip' 부트 스트랩이 있고'pipv' 툴은 모든 가상 환경에 설치됩니다 ...)하지만 실제로, 저는 distutils/packaging SIG 나 다른 [mailing lists] (https://mail.python.org/mailman/listinfo)에 이것을 올려야한다.핵심 개발자, 특히 Nick Coghlan은 내가 가지고있는 것보다 훨씬 많은 것을 생각해 왔으며 더 나은 해답을 얻을 것입니다. 생각하지 못한 것이 있으면 빨리 듣게 될 것입니다. – abarnert

+0

@hansonap :하지만 제 의견은 이렇습니다 : Python 2.x를 수정하기에는 너무 늦었습니다. 3.4+에서, 배치 도구로'venv'를 사용하십시오 (그래서 생산 기계가'pip'를 실행할 필요조차 없습니다), 또는'wheel'을 가진 사내 repo를 설정하십시오 무엇이든 컴파일해야 함). 어쨌든,'python-dev' 나'libxml2-dev' 같은 것들은 필요 없습니다. dev 머신과 일반 데스크탑에서는'python-dev'를 설치하지 않을 이유가 없으므로 그렇게하십시오. – abarnert

관련 문제