10. 디렉토리 구조
• 패키지 디렉토리, 테스트 디렉토리, setup.py, 등으로 구성
• [패키지 디렉토리] : 패키지를 담고 있음
• [tests] : 패키지 디렉토리 안의 코드에 대한 test 를 담고 있음
• [setup.py] : 패키지에 설치에 관한 정보를 담고 있음
28. 개요
• Python 2.6 이상부터 지원
• setup.py 파일이 있어야함 (setuptools / distribute 기반)
• virtualenv 에서 특별한 수정 없이 동작해야함
• debhelper (v8 이상부터 Python3 도 지원)
29. 개요
• pybuild 시스템 사용
• Python2, Python3, PyPy 지원
• nose/pytest/tox 지원
• 커스터마이징 가능한 다양한 환경 변수 지원
30. control 파일 (source)
• Build-Depends 에 아래 내용 추가
• debhelper, dh-python, python2-all, python2-setuptools
• Python3 를 지원한다면, 아래 내용을 추가
• python3-all, python3-setuptools
• Documentation 을 지원한다면, 아래 내용을 추가
• python-docutils, python-sphinx
31. control 파일 (package)
• Depends 에 아래 내용 추가
• ${python:Depends}
• Python3 를 지원한다면, 아래 내용을 추가
• ${python3:Depends}
• Documentation 패키지에는 아래 내용 추가
• ${sphinxdoc:Depends}
32. rules 파일
• PYBUILD_NAME 환경 변수 설정
• export PYBUILD_NAME=[패키지 명]
• dh 파라미터로 --with 와 --buildsystem 설정
• dh $@ --with python3 --buildsystem=pybuild
• dh $@ --with python2,python3 --buildsystem=pybuild
• documentation 을 사용시 아래 내용 추가
• --with sphinxdoc
43. Wheel vs Egg
• 둘 다 Python 의 패키지 형식임
• Egg 는 2004 년 setuptools 에서 소개됨
• Wheel 은 2012 년 PEP 427 에서 소개됨
• Wheel 은 현재 Python 공식 패키지 형식으로 논의중
44. Wheel vs Egg
• Wheel 은 배포의 형식, Egg 는 배포와 런타임 설치의 형식
• Wheel 은 배포시 pyc 파일이 포함되지 않음
• Wheel 은 다양한 파일 명명 규칙을 가지고 있음
• PEP 425
• Python 버전, ABI, 시스템 아키텍쳐의 호환성등을 표시
45. Wheel vs Egg
• Wheel 은 .dist-info 디렉토리를 사용
• PEP 376
• Egg 는 .egg-info 파일을 사용
• PEP 314
46. Wheel vs Egg
• Wheel 은 다음과 같이 빌드
• python setup.py bdist_wheel
• Egg 는 다음과 같이 빌드
• python setup.py bdist_egg
51. Debian Package in Wheel
• Debian 패키지에서 특정 경우를 제외하곤 Wheel 을 제공하면 안됨
• Wheel 은 Debian 사용자가 Python 라이브러리를 쓰기에 복잡함
• 배포판 기반의 패키징 도구에서 이점이 없음
• 사용하기에 편리하지 않음
• Debian 정책을 준수하는 내에서 아래의 경우에만 일부 기능 제공
• pip, virtualenv, pyvenv 를 지원하기 위해 사용되는 경우
52. Debian Package in Wheel
• Wheel 을 지원해야하는 경우, 의존성으로 dirtbike 를 사용
• Wheel 을 변형한 패키지
• Debian 패키지를 Wheel 로 변형해줌
• ”/usr/share/python-wheels” 에 파일이 설치됨
53. stdeb
• Python code 를 Debian source package 로 변경해주는 툴
• 자동으로 debian 패키지를 만들어줌