모듈 대 패키지?


140

내가 할 때마다 from 'x' import 'y'어느 것이 '모듈'로 간주되고 어떤 것이 '패키지'인지 궁금해하고 있었는데 왜 다른 방법이 아닌가?


1
이것이 다른 방법이 아닌 이유에 대해서는 stackoverflow.com/questions/3600352/…

1
나는 대답이 간결하고 필요한 지식을 정확하게 제공하기 때문에이 질문에 대해 감사합니다. 문서는 모두 훌륭하고 멋지지만 자세한 내용은 OP가 요청한 것보다 더 많은 정보를 포함하며 확실히 필요한 것 이상을 포함합니다. 나는 그 특정 질문에 대한 답변을 원했고 아래 답변은 내가 원하는 것입니다. 우리 중 많은 사람들이 공식적이고 심도있는 답변을 필요로하지 않습니다.
Teekin

알아야 할 관련 개념 -Python의 클래스와 모듈
RBT

답변:


192

파이썬 모듈은 단순히 파이썬 소스 파일로, 클래스, 함수 및 전역 변수를 노출 할 수 있습니다.

다른 Python 소스 파일에서 가져 오면 파일 이름이 네임 스페이스로 처리됩니다.

파이썬 패키지는 단순히 파이썬 모듈의 디렉토리입니다.

예를 들어, 다음 디렉토리 트리를 상상해보십시오 /usr/lib/python/site-packages.

mypackage/__init__.py <-- this is what tells Python to treat this directory as a package
mypackage/mymodule.py

그럼 당신은 할 것입니다 :

import mypackage.mymodule

또는

from mypackage.mymodule import myclass

Aha, 파일 이름이 네임 스페이스로 취급된다고 말할 때 이렇게 하시겠습니까? 첫 번째 경우 "mymodule.var1"또는 두 번째 경우 "myclass.var1"?
Dark Templar

1
정확히. 패키지는 여전히 네임 스페이스의 일부로 계산됩니다. 당신이 말한 것을하고 싶다면 mypackage import mymodule에서해야합니다.
Yam Marcovic

네임 스페이스 패키지에 대해 무언가를 추가하는 것이 유용 할 수 있습니다. 네임 스페이스 패키지는 코드가 반드시 동일한 디렉토리 트리에 모두 나타날 필요는 없습니다.
holdenweb

@holdenweb 여기에 관련된 다른 메커니즘을 직접 사용하지 않았으므로 전문가는 아닙니다. 새로운 답변으로 그것에 대한 자세한 설명을 제공하면 내 정보를 참조 할 것입니다.
얌 마르코비치

돌이켜 보면 가치가 없을 정도로 너무
비현실적
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.