단일 파이썬 파일 배포 : 모듈 또는 패키지?


24

유용한 파이썬 함수 또는 클래스 (또는 무엇이든) useful_thing가 단일 파일에 있다고 가정 해보십시오 . 소스 트리를 구성하는 데는 본질적으로 두 가지 방법이 있습니다. 첫 번째 방법은 단일 모듈을 사용합니다.

- setup.py
- README.rst
- ...etc...
- foo.py

어디에 useful_thing정의되어 foo.py있습니다. 두 번째 전략은 패키지를 만드는 것입니다.

- setup.py
- README.rst
- ...etc...
- foo
|-module.py
|-__init__.py

어디에 useful_thing정의되어 module.py있습니다. 패키지의 경우 __init__.py다음과 같습니다

from foo.module import useful_thing

두 경우 모두 할 수 있습니다 from foo import useful_thing.

질문 : 어느 방법이 선호되며 그 이유는 무엇입니까?

편집 : gnat 사용자 가이 질문이 잘못 형성되었다고 말하기 때문에 공식 파이썬 패키지 자습서는 위에서 설명한 방법 중 어느 것이 선호되는지에 대해서는 언급하지 않는 것입니다. 나는 명시하고 있지 내가하지 프로 / 단점에 대한 논의를 생성하는 사회 선호하는 방법이 있는지 여부에 관심이 있기 때문에 장단점 내 개인 목록을 제공합니다 :


귀하의 연구를 공유하면 모든 사람을 도울 수 있습니다. 당신이 무엇을 시도했고 왜 그것이 당신의 요구를 충족시키지 못했는지 알려주십시오. 이것은 당신이 시간을내어 자신을 돕기 위해 노력했고, 명백한 답변을 되풀이하는 것을 막아 주며, 무엇보다도보다 구체적이고 적절한 답변을 얻는 데 도움이됩니다. 또한 묻는 방법
gnat

1
@gnat : 요청하는 방법에 대한 링크를 주셔서 감사합니다. 나는 연습을 요구하는 좋은 질문을 알고 있지만,이 경우에는 내가 경험 한 것이 "A 또는 B"라는 명확한 질문을 의견 요청으로 바꿀 수 있기 때문에 내 경험을 제공하는 것이 적절하다고 생각하지 않았다. 의견에 근거 하지 않고이 질문 어떻게 개선 할 것을 권장 하십니까?
DanielSank

@ gnat : 즉, 두 가지 방법에 대한 장단점 목록에 관심이 있다면 "이 두 가지 방법의 장단점은 무엇입니까?"라고 물었고 내 부분 목록을 포함했을 것입니다.
DanielSank

답변:


17

당신은 당신을 위해 가장 간단한 일을 합니다 .

A에 대한 하나 개의 기능 모듈 , 절대적으로 패키지를 만드는 것은 아무런 도움이되지 않습니다. 패키지는 추가 네임 스페이스를 만들거나 여러 모듈에서 코드를 구성하는 데 유용합니다.

Python 표준 라이브러리 의 jsonunittest모듈은 실제로 코드 구성 목적으로 패키지입니다. 그러나 현재 하나의 파이썬 파일에 코드를 하나의 모듈로 두는 것이 좋습니다.

예를 원한다면 :

패키지를 실제로 잘 활용하는 프로젝트의 좋은 예를 보려면 다음을 살펴보십시오.

'공식적인'추천은 없습니다. 두 옵션 모두 완전히 유효합니다.


공식적으로 선호되는 방법이 없습니까?
DanielSank

3
아니요, 선호하는 방법이 없습니다.
Martijn Pieters 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.