이번 글에서는 상위 디렉터리에서 모듈을 가져오는 방법을 알아 보겠습니다. Python 3.3부터는 상위 디렉터리의 모듈을 참조하거나 가져오는 것이 허용되지 않습니다. 아래 예를 보면 이를 명확하게 이해할 수 있습니다.

상위 디렉터리에는 하위 디렉터리인 geeks.py 파일이 있고 하위 디렉터리에는 temp.py라는 Python 파일이 있습니다. 이제 다음의 temp.py 파일에서 상위 디렉터리의 geeks 모듈을 가져올 수 있는지 시도해 보겠습니다. 하위 디렉토리.
geeks.py (상위 디렉토리의 모듈)
파이썬3
러드야드 키플링 설명한다면
def> geek_method():> > print> (> 'This method in geeks module.......bye'> )> |
>
>
temp.py(하위 디렉터리의 Python 파일)
파이썬3
배우 란비르 카푸어 나이
# importing the module in> # parent directory> from> parentdirectory> import> geeks> # calling the func1() method> # from geeks module> geeks.geek_method()> |
>
>
이전에 논의한 것처럼 상위 디렉터리에서 모듈을 가져올 수 없으므로 다음과 같은 오류가 발생합니다.
역추적(가장 최근 호출 마지막):
파일 C:/Users/sai mohan pulamolu/Desktop/parentdirectory/subdirectory/temp.py, 2행, in
상위 디렉토리에서 가져오기 괴짜
ModuleNotFoundError: 'parentdirectory'라는 모듈이 없습니다.
이제 모듈을 가져오는 방법을 알아 보겠습니다. 상위 디렉토리:
모듈을 가져오려면 해당 모듈이 있는 디렉터리가 PYTHONPATH에 있어야 합니다. Python에서 로드할 패키지 목록이 포함된 환경 변수입니다. PYTHONPATH에 있는 패키지 목록은 sys.path에도 있으므로 상위 디렉터리 경로를 sys.path.
우리 작업에서는 예제를 통해 아래에 설명된 세 가지 다른 접근 방식을 사용합니다.
방법 1: sys.path 메서드를 사용하여 상위 디렉터리에서 가져오기
여기서는 sys 모듈을 사용하고 필요한 모듈에 대한 경로를 직접 설정하겠습니다.
상위 디렉토리를 sys.path 사용하여 추가() 방법 . 이는 인터프리터가 검색할 특정 경로를 추가하기 위해 경로 변수와 함께 사용할 수 있는 sys 모듈의 내장 함수입니다. 다음 예에서는 이를 수행하는 방법을 보여줍니다.
닉 풀로스 블랙 라이트닝
파이썬3
import> sys> # setting path> sys.path.append(> '../parentdirectory'> )> # importing> from> parentdirectory.geeks> import> geek_method> # using> geek_method()> |
>
>
산출:
This method in geeks module.......bye>
방법 2: 다음을 사용하여 상위 디렉터리에서 가져오기 os.path.abspath() 메서드
여기서는 디렉토리를 가져오기 위해 sys 모듈과 path 모듈을 사용하고 필요한 모듈에 직접 경로를 설정합니다.
통사론: os.path.abspath(경로)
매개변수:
길: 파일 시스템 경로를 나타내는 경로류 객체입니다.반환 유형: 이 메서드는 경로 이름 path의 정규화된 버전을 반환합니다.
먼저 temp.py 파일이 현재 path.path(__file__)를 사용하고 있는 디렉터리의 이름을 가져옵니다. abspath(), 두 번째로 디렉토리를 sys.path .append를 사용하여 확인합니다. 해당 방법을 사용합니다.
파이썬3
import> path> import> sys> # directory reach> directory> => path.path(__file__).abspath()> # setting path> sys.path.append(directory.parent.parent)> # importing> from> parentdirectory.geeks> import> geek_method> # using> geek_method()> |
산제이 더트와
>
>
산출:
This method in geeks module.......bye>
방법 3: 다음을 사용하여 상위 디렉터리에서 가져오기 os.path.dirname 방법
여기서는 디렉토리(현재 및 상위 디렉토리)를 가져오기 위해 sys 모듈과 os 모듈을 사용하고 필요한 모듈에 직접 경로를 설정합니다.
자바스크립트 전역 변수
통사론: os.path.dirname(경로)
매개변수:
길 : 파일 시스템 경로를 나타내는 경로류 객체입니다.반환 유형: 이 메서드는 지정된 경로의 디렉터리 이름을 나타내는 문자열 값을 반환합니다.
먼저 os.path.dirname(os.path.realpath(__file__))을 사용하여 현재 디렉터리를 가져오고, 두 번째로 os.path.dirname()을 사용하여 상위 디렉터리를 가져오고, 마지막으로 상위 디렉터리를 추가합니다. 디렉토리에 sys.path 확인하기 위해 해당 방법을 사용하겠습니다.
파이썬3
import> sys> import> os> # getting the name of the directory> # where the this file is present.> current> => os.path.dirname(os.path.realpath(__file__))> # Getting the parent directory name> # where the current directory is present.> parent> => os.path.dirname(current)> # adding the parent directory to> # the sys.path.> sys.path.append(parent)> # now we can import the module in the parent> # directory.> import> geeks> geeks.geek_method()> |
>
>
산출: