ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Module Import
    python/기본 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 를 모듈로 등록한다.

     

    'python > 기본' 카테고리의 다른 글

    Built-in Functions  (0) 2022.04.30
    setup.py 로 패키지 만들기  (0) 2022.04.30
    Exception  (0) 2022.04.29
    Namespace & Scope  (0) 2022.04.29
    Generator  (0) 2022.04.29

    댓글

Designed by Tistory.