내 프로젝트에 필요한 모든 패키지를 설치하는 쉘 스크립트가 있습니다. 이러한 패키지 중 일부는 Python 3을 기반으로 하며 컴파일해야 하며, Python 소스 1을 설치해야 합니다 (예: python3-dev
일반적인 Debian 기반 배포판의 패키지). 그렇지 않으면 이해할 수 없거나 오해의 소지가 있는 컴파일 오류 메시지(헤더 파일 누락)가 표시되는데, 이것이 제가 방지하고 싶은 것입니다.
이제 Python 3 소스가 이미 설치되어 있는지 감지하는 것이 더 나을 것이라고 생각합니다. 실행을 시도하지도 않는 경우를 대비하여 pip
대신 사용자에게 배포용 Python 소스를 가져오라고 지시하고 일부는 가장 일반적인 지침 중 하나입니다.
간단히 말해서: Python 3 헤더가 다양한 배포판에 설치되어 있는지 여부를 안정적으로 감지하는 방법은 무엇입니까(아마도 Cygwin과 같은 Linux가 아닌 환경에서도 가능)?
1. 패키지 mypy
및 일부 오류 메시지는 다음과 같습니다.
ast27/Parser/acceler.c:13:25: fatal error: pgenheaders.h: No such file or directory compilation terminated.
[…]
Command "/path/to/my/venv/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-x0e2zn8t/typed-ast/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-uythmwn1-record/install-record.txt --single-version-externally-managed --compile --install-headers /path/to/my/venv/include/site/python3.5/typed-ast" failed with error code 1 in /tmp/pip-build-x0e2zn8t/typed-ast/
답변1
python3-config
해결책을 찾았습니다. 기본적으로 여기에 Python 3 개발 파일이 있음을 나타내는 ()에 해결책이 있는지 확인하면 됩니다 .PATH
command -v python3-config >/dev/null
한 단계 더 나아가고 싶다면 이론적으로 이 도구를 사용하여 필요한 일부 특정 헤더 파일을 확인할 수 있는 포함 디렉터리를 가져올 수도 있지만, 그럴 필요는 없다고 생각합니다.
python2-config
그런데 Python 2와 Python 2.7+( 및 각각 python2.7-config
) 에도 동일하게 적용됩니다 .