파이썬 모듈: 생성, 임포트, sys.path, PYTHONPATH 환경 변수
파이썬의 모듈은 코드의 재사용성을 높이고, 프로그램을 더 효율적으로 관리할 수 있게 돕는 중요한 요소입니다. 이번 글에서는 모듈의 기본적인 개념과 생성, 임포트 방법, 그리고 ‘if name == “main”‘의 의미와 사용법, 그리고 모듈 임포트에 도움이 되는 sys.path와 PYTHONPATH 환경 변수 설정에 대해 알아보겠습니다.
목차
- 모듈이란?
- 모듈 생성하기
- 모듈 임포트하기
- 다른 디렉토리의 모듈 임포트하기 (sys.path.append)
- PYTHONPATH 환경 변수 사용하기
- ‘if __name__ == “__main__”:’의 의미
모듈이란?
모듈은 파이썬 정의와 문장들을 담고 있는 파일입니다. 함수나 변수, 클래스들을 모아 놓은 파이썬 파일입니다. 이를 통해 코드의 재사용성을 높일 수 있습니다.
모듈 생성하기
모듈을 생성하는 것은 매우 간단합니다. 모듈이란 특별한 것이 아닌, 파이썬 코드를 담고 있는 ‘.py’ 확장자를 가진 파일입니다. 즉, 일반적으로 파이썬 코드를 작성하는 ‘.py’ 파일 자체가 모듈이 될 수 있습니다. 예를 들어, 아래와 같은 함수를 가진 파이썬 파일(my_module.py)을 생성해 보겠습니다.
# my_module.py
def my_function():
print("This is my module!")
모듈 임포트하기
모듈을 생성한 후에는, ‘import’ 키워드를 사용하여 해당 모듈을 임포트 할 수 있습니다. 아래와 같이 사용할 수 있습니다.
import my_module
my_module.my_function() # 출력: This is my module!
▶ 이런 식으로 ‘my_module’이라는 모듈을 임포트 하려면, 해당 모듈은 현재 작업 중인 파이썬 스크립트와 동일한 디렉토리에 위치해야 합니다. 그렇지 않으면, 파이썬은 해당 모듈을 찾을 수 없습니다. 그렇다면 만약 모듈이 다른 디렉토리에 있다면 어떻게 해야 할까요?
▶ 이럴 때는 ‘sys.path.append’ 메서드나 ‘PYTHONPATH’ 환경 변수를 사용하여 파이썬에게 추가적인 모듈을 찾을 수 있는 디렉토리를 알려줄 수 있습니다.
다른 디렉토리의 모듈 임포트하기
파이썬에서 모듈을 찾는 위치는 sys.path라는 리스트에 저장되어 있습니다. 이 리스트에는 문자열 형태의 파일 경로들이 포함되어 있고, 파이썬은 이 경로들을 차례대로 검색하여 모듈을 찾습니다.
따라서, 다른 디렉토리에 있는 모듈을 임포트 하려면 해당 디렉토리의 경로를 sys.path에 추가해야 합니다. 이는 sys.path.append() 함수를 사용하여 수행할 수 있습니다.
예를 들어, ‘C:bluesharepy_modules’ 디렉토리에 있는 모듈을 임포트 하려면 다음과 같이 할 수 있습니다.
import sys
sys.path.append('C:/blueshare/py_modules')
import my_module
my_module.my_function()
▶ sys.path.append는 현재 실행 중인 Python 인터프리터 세션에만 적용됩니다. 이는 sys.path는 현재 인터프리터 세션에서만 유효한 경로 정보를 가지고 있기 때문입니다. 즉, sys.path에 경로를 추가하면 그 변경 사항은 현재의 인터프리터 세션에서만 유효하며, 인터프리터를 종료하면 그 정보는 사라집니다. 그러므로, 다른 Python 스크립트나 새로 시작하는 인터프리터 세션에서는 이전에 추가했던 경로 정보가 기억되지 않으므로, 필요한 경로는 각 스크립트나 세션마다 sys.path.append를 통해 다시 추가해주어야 합니다.
▶ 반면에, PYTHONPATH 환경 변수에 디렉토리를 추가하면, 그 디렉토리는 모든 Python 인터프리터 세션에서 접근할 수 있습니다. 이는 환경 변수가 시스템 레벨에서 설정되며, 모든 Python 인터프리터가 이 환경 변수를 참조하기 때문입니다. 따라서 PYTHONPATH를 사용하면 각각의 스크립트나 세션에서 sys.path.append를 호출할 필요가 없습니다.
PYTHONPATH 환경 변수 사용하기
이 환경 변수는 파이썬이 모듈을 찾을 수 있는 추가적인 디렉토리를 정의합니다.
C:>set PYTHONPATH=C:bluesharepy_modules
※ 맥이나 유닉스 환경에서는 set 대신 export 명령을 사용해야 한다.
이제 이 디렉토리에 있는 모듈을 직접 임포트 할 수 있습니다. 이 방법들을 통해, 파이썬 모듈을 더 유연하게 관리하고 활용할 수 있게 됩니다.
import my_module
my_module.my_function() # 출력: This is my module!
if __name__ == “__main__”의 의미
파이썬에서 ‘if __name__ == “__main__”:’은 현재 스크립트 파일이 프로그램의 시작점이 맞는지 판단하는 작업입니다. 이 조건문 아래에 작성된 코드는 ‘직접’ 실행될 때만 실행되며, 모듈로 임포트 될 경우에는 실행되지 않습니다. 이러한 방법은 모듈을 테스트하기 위한 코드를 작성하거나, 모듈이 독립적으로 사용될 수 있게 하기 위한 방법입니다. 아래 예시를 보겠습니다.
# my_module.py
def my_function():
print("This is my module!")
if __name__ == "__main__":
my_function()
참고 자료
- 파이썬 공식 문서 – 모듈 (https://docs.python.org/ko/3/tutorial/modules.htmlhttps://docs.python.org/ko/3/tutorial/modules.html)
- 파이썬 공식 문서 – sys (https://docs.python.org/ko/3/library/sys.htmlhttps://docs.python.org/ko/3/library/sys.html)
- 파이썬 공식 문서 – PYTHONPATH (https://docs.python.org/3/using/cmdline.html#envvar-PYTHONPATHhttps://docs.python.org/3/using/cmdline.html#envvar-PYTHONPATH)
함께 보면 좋은 이전 게시글
- 파이썬 필수 내장 함수: 코드를 더 효율적으로 작성하기
- 파이썬 함수 사용법: 매개변수와 인수, 람다 함수
- 파이썬 파일 처리 방법: 파일 생성 및 읽기와 쓰기
- 파이썬 프로그램의 입력과 출력: 파일 IO, 명령행 인자 처리
- 파이썬 변수 이해하기: 기본 개념부터 실전 활용까지
이 글이 도움이 되셨다면 공유를 부탁 드립니다. 다음 글에서 뵙겠습니다!