ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Python] 상위, 하위 , 동일 폴더 내 모듈 from, import 하는 방법
    언어/파이썬 & 장고 2017. 2. 16. 10:08

    먼저 프로젝트 구조가 아래와 같이 구성되어 있다고 가정합니다.

    project	
    	-- test
    		+-- sub1
    			-- __init__.py
    			-- aa.py
    			-- bb.py
    		+-- sub2
    			-- __init__.py
    			-- cc.py
    			-- dd.py
    		-- ee.py
    		-- ff.py
    		-- __init__.py
    	-- gg.py

    ee.py에서 다른 모듈 참조 (하위 폴더 내 파일, 동일 폴더 내 파일 참조)

    이와 같은 방법은 간단합니다.

    # aa.py를 참조할 경우
    from sub1 import aa
     
    # ff.py를 참조할 경우
    import ff 
    # 또는
    from . import ff # from . 은 동일폴더라는 의미를 나타냄.

    상위 폴더 내 파일 참조

    예를들어 aa.py에서 sub2에 있는 cc.py을 참조하는 방법은 두 가지가 있습니다.

    1. 부모폴더의 절대경로를 참조 path에 추가

    모듈의 시작부분의 import에 아래와 같은 코드를 추가하면 문제는 해결됩니다.

    # aa.py
     
    import os
    import sys
    sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__))))
     
    import cc.py
    현재 모듈의 절대경로를 알아내어 상위 폴더 절대경로를 참조 path에 추가하는 방식입니다. 위에 있는 코드는 1단계 상위 폴더의 경로를 추가할 때 사용합니다.
    만약 aa.py에서 gg.py를 참조한다고 하면 2단계 상위 폴더 경로를 추가해야 하므로 아래와 같이 코드가 길어집니다.


    # gg.py
    
    import os
    import sys
    
    sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(os.path.abspath(os.path.dirname(__file__))))))
    
    import gg.py


    2. 시스템의 환경변수 PYTHONPATH에 프로젝트 추가

    이 방법은 모든 파이썬 프로젝트에서 built-in 모듈을 그냥 import 할 수 있는 것과 마찬가지의 원리로 시스템의 파이썬 컴파일러가 기본적으로 참조하게 될 패키지 모듈에 자신의 프로젝트를 추가하는 형태입니다.

    윈도우

    제어판 - 시스템 - 고급 - 환경변수 에 가서 PYTHON_PATH를 편집하여 자신의 프로젝트 홈 폴더를 맨 뒤에 붙여주면 됩니다.

    리눅스

    추가할 프로젝트의 절대경로가 /home/user/project일 경우, 홈 폴더의 .bash_profile 에 아래와 같은 코드를 추가하여 시스템 환경변수를 변경하는 것입니다.

    $ vi ~/bash_profile
    
    ========= bash_profile =========
    ...
    PYTHONPATH=$PYTHONPATH:/home/user/test
    export PYTHONPATH
    ============================
    $ source ~/bash_profile


    댓글