모범 사례는 없지만 사람들이 따라야 할 몇 가지 트랙이 있습니다. 상업 제품 유통에 관해서는 다음이 있습니다 :
를 개발 프로세스와 관련하여 자신의 패키지 서버
관리, 그것은 로컬 패키지 서버에서 dev에 상자 업데이트가 중 하나에 일반적입니다 . 이를 통해 종속성 목록을 "동결"(즉, 업스트림 업데이트를 중지 함)하여 모든 사용자가 동일한 버전에 있도록 할 수 있습니다. 특정 시간에 업데이트하고 개발자를 업데이트하여 모든 사람을 사로 잡도록 할 수 있습니다.
고객 설치의 경우 일반적으로 설치 스크립트를 작성합니다. 동시에 모든 패키지를 수집하고 libs를 설치할 수 있습니다. 고객이 이미 다른 버전을 사용하고있을 수 있으므로 새 Python 또는 표준 라이브러리를 설치하는 데 문제가있을 수 있습니다. 일반적으로 패키지를 시스템 패키지와 분리하기 위해 샌드 박스에 설치할 수 있습니다. 이것은 Windows보다 Linux에서 더 많은 문제입니다.
툴체인은
다른 옵션은 각각의 OS를 지원하기위한 툴체인을 만드는 것입니다. 툴체인은 모든 의존성입니다 (기본 OS 라이브러리는 glibc
까지 포함되지 않음).이 툴체인은 패키지 화되어 개발자 및 고객에게 배포됩니다. 도구 모음의 모범 사례는 다음과 같습니다.
- 혼동을 막기 위해 실행 파일을 변경하십시오. (예 : python -> pkg_python)
- 우발적 인 사용을 막기 위해
.../bin
디렉토리에 설치하지 마십시오. (즉, 리눅스에서는 .../libexec
아래에 설치할 수 있습니다. /opt
도 개인적으로 싫어하지만 사용됩니다.)
- 올바른 위치에 lib를 설치하여
lib/python/site-packages
아래에 PYTHONPATH를 사용할 필요가 없습니다.
- 소스 파일을 실행 파일에 대해
.py
배포 파일을 배포 스크립트가 적절하게 재배치 할 수 있도록 배포하십시오.
- 패키지 형식이 OS 기본 패키지해야한다 (레드햇 -> RPM, 데비안 -> DEB, 승 -> MSI) 나는이 문제 쇼까지 했어
. 저는 Python으로 raytracer를 만들고 있었고 PIL을 사용하여 이미지를 작성했습니다. Apple이 Mac OS에서 PIL을 제공하지 않기 때문에, Mac으로 옮길 때 raytracer가 완전히 파손되었습니다. 라이브러리를 많이 사용하지 않으면 제거하고 고유 한 솔루션을 작성하십시오. – Blender