python/기본
Module Import
wefree
2022. 4. 30. 20:06
문제
my_project/
├── main.py
└── my_pkg
├── __init__.py
├── util_a
│ ├── __init__.py
│ └── a.py
└── util_b
├── __init__.py
└── b.py
python 프로젝트가 위와 같이 구성되어 있을 때, 디렉토리 하위에 __init__.py 파일이 있으면 모듈로 인식한다.
b.py 에서 a.py 를 참조하는 예제를 만들어 보자
코드
a.py
def a_echo():
print('AAA')
b.py
# from ..util_a import a
from my_pkg.util_a import a
def b_echo():
a.a_echo()
print('BBB')
from ..util_a import a 처럼 사용할 수도 있지만 자주 사용하지는 않는다?
main.py
from my_pkg.util_b import b
b.b_echo()
설명
main.py 를 아래처럼 수정 하면 에러가 난다.
from my_pkg.util_b import *
b.b_echo()
위의 코드를 문제 없이 동작하게 하려면 my_pkg/util_b/__init__.py 에 아래 내용을 추가한다.
__all__ = ['b']
이제 util_b 하위에 'b' 가 있는 것을 안내해 주고 있기 때문에 main.py 는 문제 없이 동작한다.
module 을 찾는 경로는 아래처럼 확인할 수 있다.
import sys
print(sys.modules['os'])
print(sys.path)
sys.path.append('/opt')
# export PYTHONPATH=/foo:/bar
intellij 에서 Module 인식
File > Project Structure 메뉴의 Modules 항목에서 my_project 를 모듈로 등록한다.