코드를 패키지화하여 주요 기능 만 표시하려고합니다. 내가 internal_modules.B
에서 internal_modules.A
하지만 일부 작업을 가져 옵니까패키지의 구현 모듈과 서브 모듈 숨기기
./
setup.py
my_module/
__init__.py
public_functions.py
internal_modules/
__init__.py
A.py
B.py
other_modules.py/
__init__.py
C.py
public_functions
에서 모두 A.py
및 B.py
는 C.py
에서 일부 기능을 사용하여 내 디렉토리는 다음과 같이한다. 다음과 같이
내 setup.py
은 다음과 같습니다
from setuptools import setup
setup(name='my_module',
version='0.1',
description='my_awesome_module',
author='Me',
author_email='[email protected]',
license='MIT',
packages=['my_module'],
zip_safe=False)
내가 핍과를 설치하려면,하지만 난이 설치되면 내 패키지 내 internal_modules
볼 수의 가지 않도록합니다.
내가 제대로 설치할 수 있지만이
from my_module import public_module
을 수행 할 때 그것은 public_module.py
의 첫 번째 줄에 ImportError: no module named internal_modules.A
가 발생합니다.
는 내가 다른 패키지로 내 setup.py
선언에 my_module.internal_modules
를 추가하면 내가 고칠 수 알지만,이 A.py
설치 패키지에서 볼 수 B.py
와 공공 내 internal_modules을 드릴 것입니다.
패키지의'__init__'에서'__all__'이 어떻게 작동하는지 모르겠습니다. 예를 들어 줄 수 있습니까? 그건 그렇고,'_internal_modules'는 밑줄 친 사실을 강조하고 있습니다. 이전과 같은 오류 ('my_module._internal_modules') –
'__all__ = [ 'module1', 'module2']'는'from package import *'를 수행하는 경우에만 모듈 1과 2를 반입합니다. 당신이 원한다면 패키지의 용기에 직접 접근 할 수 있습니다. _underscored 모듈은'import package'를 실행했다면 기본적으로 가져 오지 말아야하지만 마찬가지로 - 전용 사용자가 여전히 액세스 할 수 있습니다. – jkm