파이썬 패키지의 서브 모듈을 포함하는 디렉토리 (서브 패키지)가 패키지를 가져올 때 기호로 나타나는 이유는 무엇입니까? 나는이 패키지가있는 경우 예를 들어, :파이썬 가져 오기 패키지 - 서브 패키지가 기호 테이블에 나타나서는 안됩니다
PyModTest/ Top-level package
__init__.py Initialize the package
Source/ Subpackage holding source files
__init__.py
WildMod.py Submodule containing a function: 'WildFunc'
를 최상위 __init__.py은 다음과 같다 여기서
#!/usr/bin/env python
from Source.WildMod import WildFunc
하고, 완전성 '을 위해, 낮은 수준의 __init__.py은 다음과 같습니다 :
#!/usr/bin/env python
__all__ = ["WildMod"]
OK, 내가 통역을 열어 이제 모듈을 가져온 기호를 보면 :
>>> import PyModTest
>>> dir(PyModTest)
['Source', 'WildFunc', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
'가져 오기'기능을 사용하지 않아도 '소스'모듈이 표시됩니다.
내가보고 싶은 유일한 기호는 내 'WildFunc'입니다. 'Source'패키지를 숨길 방법이 있습니까? 여기에서 주목해야 할
굉장합니다. '델 소스'에 대한 제안을 주셔서 감사합니다 :) – rokuingh
'소스'는'PyModTest'의 서브 패키지이고, 암시 적 임포트는 조용히'PyModTest.Source import ... '로 변형되므로'Source' 모듈은 'PyModTest' 모듈의 속성으로 추가 될 수 있습니다. 'Source '가'PyModTest' 패키지 외부에서 발견 되었다면 (아마, 하위 패키지가'sys.path'보다 우선합니다.), 이것은 발생하지 않았을 것입니다. 자신과 타인을 혼란스럽게하는 것을 피하기 위해 항상 절대 수입을 선호합니다. – SingleNegationElimination
@TokenMacGuy : 아, 잘 잡으세요. 어쨌든 이것은 상대적 수입이라는 사실을 놓쳤습니다. –