2017-10-19 20 views
3

누군가가 C++ 부스트 라이브러리에 의존하는 Python (Cython) 라이브러리를 패키지한다고 가정합니다.Python 패키징 : 의존성으로 라이브러리 부스트

setup.py을 구성하는 가장 좋은 방법은 사용자가 부스트 라이브러리 (즉, 다른 OS의 경우 Ubuntu에 apt-get install libboost-dev 등)를 설치해야한다는 사실을 사용자에게 알리도록하는 것입니다. 아니면 부스트 라이브러리를 파이썬 패키지 배포판에 포함시키는 것이 더 나은 방법일까요?

+0

런타임에이를 감지하는 좋은 방법이 있는지 확실하지 않습니다. 어쩌면 부스트를 사용하는 간단한 테스트 프로그램을 컴파일 해보고 컴파일이 실패했는지 확인해 볼까? – ngoldbaum

+0

@ngoldbaum 나는 이것을 이미했다. 문제는 부스트와 같은 외부 의존성을 가진 모범 사례에 관한 것입니다. 간단히 말해, 패키지에 부스트 라이브러리를 포함 시키거나 (헤더 만) 파이썬 패키지를 설치하는 동안 사용자에게 오류를보고해야합니다. – Zouzias

+0

Danny의 답변에 동의합니다. 휠을 사용할 수 없다면, 필요한 외부 라이브러리를 사용할 수 없다면 유용한 오류 메시지와 함께 setup.py에서 오류가 발생해야합니다. – ngoldbaum

답변

2

질문은 더 나은 외부 라이브러리 의존성을 포함 파이썬 확장을 배포하는 가장 좋은 방법은 무엇

으로 요구된다.

이진수 휠 패키지가 더 적합합니다.

사용자는 소스 코드 빌드 및 설치에 사용되는 setup.py에 대해 알 필요가 없습니다. 사용자는 바이너리 휠 패키지를 다운로드하여 설치하기 만하면됩니다.

헤더 파일 만 포함하면 라이브러리를 빌드하고 링크해야하는 문제가 해결되지 않습니다. 또한 버전 비 호환성 문제를 해결합니다.

그래서 setup.py은 이것에 대해 특별한 것을 가질 필요가 없습니다. 라이브러리가 포함되어 있고 연결할 라이브러리가 있다면 프로젝트의 하위 디렉토리가 될 위치를 알아야합니다.

설명서에는 소스에서 빌드하는 방법에 대한 지침이 포함되어야합니다. 소스에서 빌드하는 방법에 대한 지침이 포함되어 있어야합니다 (파이썬 헤더 파일, 적절한 컴파일러 등).

auditwheel과 같은 도구는 외부 라이브러리 종속성을 바이너리 휠에 묶어서 최종 사용자가 패키지를 사용하기 위해 라이브러리를 설치할 필요가 없습니다.

이진 Python 확장을 배포하는 경우 manylinuxthis demo project도 참조하십시오.