반응형
다른 디렉토리에 있는 모듈을 불러오는 방법은?
일반적으로 모듈을 불러 올 때 프로젝트 내 경로에 모듈이 없으면 에러가 발생한다.
하지만 sys모듈 이나 환경 변수를 사용하면 다른 경로에 있는 모듈을 불러내도 오류가 발생하지 않고 import 할 수 있다.
두 가지 방법에 대해 알아보자.
불러올 모듈의 위치와 코드 내용
경로가 다른 모듈 불러오는 방법에 대해 설명하기 전 모듈의 위치와 코드 내용을 첨부.
모듈로 사용할 module.py은 현재 프로젝트 폴더가 아닌 C 드라이브에 있다.
module.py 의 코드 내용은 아래와 같다.
#module.py
def sum(a,b):
return a + b
if __name__ == "__main__":
print(sum(1,2))
sys 라이브러리 모듈 사용하여 모듈 불러오기
sys 는 파이썬을 설치 할 때 자동으로 설치되는 라이브러리 모듈이다.
sys의 기능 중 경로를 추가하는 sys.path.append함수를 사용해 모듈이 있는 경로를 추가 시켜주면 된다.
moule.py 모듈을 정상적으로 불러올 수 있다.
#test.py
import sys
sys.path.append("C:/")
from module import*
print(sum(1,2))
결과 : 3
제대로 경로가 추가 됐는지 확인 하는 방법은 다음과 같다.
결과 창 맨 마지막 줄에 'C:/' 가 추가 된 것이 확인 가능하다.
#test.py
import sys
sys.path.append("C:/")
print(sys.path)
결과 : ['C:\\Users\\skek1\\PycharmProjects\\pythonProject1', 'C:\\Users\\skek1\\PycharmProjects\\pythonProject1', 'C:\\Users\\skek1\\AppData\\Local\\Programs\\Python\\Python39\\python39.zip', 'C:\\Users\\skek1\\AppData\\Local\\Programs\\Python\\Python39\\DLLs', 'C:\\Users\\skek1\\AppData\\Local\\Programs\\Python\\Python39\\lib', 'C:\\Users\\skek1\\AppData\\Local\\Programs\\Python\\Python39', 'C:\\Users\\skek1\\PycharmProjects\\pythonProject1\\venv', 'C:\\Users\\skek1\\PycharmProjects\\pythonProject1\\venv\\lib\\site-packages', 'C:/']
환경변수 추가하여 모듈 불러오기
sys 라이브러리 모듈을 사용해도 되지만 환경 변수를 추가해서 모듈을 불러오는 방법도 있다.
이 게시글에서는 파이참에서 환경변수를 추가하여 모듈 불러오는 방법에 대해 설명한다.
물론 파이썬 인터프리터에서도 가능하다.
1. Run -> Edit Confiurations
2. 현재 자신이 작성 하고 있는 py 파일의 이름 클릭 -> Enviroment variables의 네모난 그림 클릭
이제 환경 변수 추가 해야한다.
주의 점 : 환경 변수 NAME인 PYTHONPATH를 정확히 적을 것.
3. + 클릭 -> 환경변수 이름과 모듈이 있는 경로 작성 -> OK 클릭
4. 환경 변수 등록이 끝났다. 코드를 실행 시켜 보면 정상적으로 모듈을 불러 낸 것을 확인 할 수 있다.
#test.py
from module import*
print(sum(1,2))
결과 : 3
반응형
'Python' 카테고리의 다른 글
[Python] 파이썬 패키지(Packages) 생성과 사용법 (1) | 2024.02.08 |
---|---|
[Python] 파이썬 모듈(module) 생성과 사용법 (0) | 2024.02.08 |
[Python] 파이썬 메서드 오버라이딩 이란? (0) | 2024.02.08 |
[Python] 파이썬 클래스 상속 정리 (0) | 2024.02.08 |
[Python] 파이썬 클래스 & 객체 사용법 (클래스 생성/ 객체 생성/ 메서드 생성/ 생성자/ 소멸자) (1) | 2024.02.08 |