모듈과 패키지

PythonBeginner
지금 연습하기

소개

이 랩에서는 Python 모듈과 패키지를 사용하여 코드를 구성하고 재사용하는 방법을 살펴봅니다. 간단한 예시부터 시작하여 점차적으로 더 복잡한 예시로 발전해 나갈 것입니다. 이 랩을 마치면, 여러분은 자신의 프로젝트에서 모듈과 패키지를 사용하는 방법에 대한 확실한 이해를 갖게 될 것입니다.

성과

  • Python 모듈
  • Python 패키지
  • PyPI
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 중급 레벨의 실험이며 완료율은 79%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

Python 모듈과 패키지란 무엇인가?

Python 에서 **모듈 (module)**은 함수, 클래스, 변수의 정의를 포함하는 파일입니다. 모듈을 사용하여 큰 프로그램을 더 작고 관리하기 쉬운 부분으로 나눌 수 있습니다. 또한 모듈은 여러 프로젝트에서 코드를 쉽게 재사용할 수 있도록 합니다.

**패키지 (package)**는 모듈의 집합입니다. 패키지를 사용하면 관련 모듈을 함께 그룹화하고 간단한 점 표기법을 사용하여 액세스할 수 있습니다.

Python 모듈과 패키지에는 여러 범주가 있습니다.

  1. 내장 모듈 (Built-in modules): Python 인터프리터에 포함되어 있으며 모든 Python 프로그램에서 사용할 수 있는 모듈입니다. 내장 모듈의 예로는 math, os, sys, random 등이 있습니다.
  2. 표준 라이브러리 모듈 (Standard library modules): Python 표준 라이브러리의 일부이지만 인터프리터에 내장되어 있지 않은 모듈입니다. 내장 모듈과 동일한 방식으로 가져와 사용할 수 있습니다. 표준 라이브러리 모듈의 예로는 json, urllib, re, csv 등이 있습니다.
  3. 타사 모듈 (Third-party modules): Python 핵심 개발 팀 외부의 개인 또는 조직에서 개발하고 유지 관리하는 모듈입니다. 내장 및 표준 라이브러리 모듈과 동일한 방식으로 가져와 사용할 수 있지만 별도로 설치해야 합니다. 다양한 주제와 목적을 다루는 많은 타사 모듈이 있습니다. 몇 가지 예로는 numpy, pandas, requests, beautifulsoup4 등이 있습니다.
  4. 로컬 모듈 (Local modules): 이를 사용하는 Python 프로그램과 동일한 디렉토리에 있는 모듈입니다. 전체 경로를 지정하지 않고 import 문과 모듈 이름을 사용하여 로컬 모듈을 가져올 수 있습니다.
  5. 상대 임포트 (Relative imports): 현재 패키지 또는 모듈을 기준으로 하는 임포트입니다. 현재 디렉토리와 다른 디렉토리에 있는 모듈과 패키지를 가져올 수 있습니다. 상대 임포트를 사용하여 동일한 프로젝트의 일부이지만 다른 디렉토리 구조로 구성된 모듈과 패키지를 가져올 수 있습니다.

요약하면, Python 모듈과 패키지는 출처와 액세스 방법에 따라 분류할 수 있습니다. 내장 및 표준 라이브러리 모듈은 Python 인터프리터에 포함되어 있으며 모든 Python 프로그램에서 사용할 수 있는 반면, 타사 모듈은 별도로 설치해야 합니다. 로컬 모듈과 상대 임포트를 사용하면 동일한 프로젝트에 있지만 다른 디렉토리 구조에 있는 모듈과 패키지를 가져올 수 있습니다.

다음은 내장 Python 모듈 중 하나인 math 모듈을 사용하는 예입니다.

새로운 Python 인터프리터 세션을 열고 다음 코드를 입력하십시오.

python3
import math

## Calculate the square root of 16
x = math.sqrt(16)
print(x)  ## Output: 4.0

## Calculate the sine of pi
y = math.sin(math.pi)
print(y)  ## Output: 1.2246467991473532e-16

## Calculate the factorial of 5
z = math.factorial(5)
print(z)  ## Output: 120

math 모듈은 수학 함수와 상수를 제공하는 내장 Python 모듈입니다. math 모듈에서 사용할 수 있는 함수 중 일부는 sqrt(), sin(), cos(), tan(), log(), exp(), factorial() 등이 있습니다. math 모듈은 또한 pie와 같은 상수를 제공합니다.

import 문을 사용하여 math 모듈을 가져온 다음 코드에서 해당 함수를 호출하고 상수에 액세스할 수 있습니다.

위의 예에서는 sqrt() 함수를 사용하여 16 의 제곱근을 계산하고, sin() 함수를 사용하여 pi의 사인을 계산하고, factorial() 함수를 사용하여 5 의 팩토리얼을 계산합니다. 또한 pi 상수를 사용하여 sin() 함수 호출에서 pi의 값을 나타냅니다.

유용한 함수와 상수를 제공하는 다른 많은 내장 Python 모듈이 있습니다. 예를 들어 운영 체제와 상호 작용하기 위한 os 모듈, 날짜 및 시간으로 작업하기 위한 datetime 모듈, 난수를 생성하기 위한 random 모듈이 있습니다. 내장 Python 모듈의 전체 목록은 설명서에서 찾을 수 있습니다.

Python 모듈 생성하기

이 단계에서는 Python 모듈을 만들 것입니다. 모듈 (module) 은 Python 코드를 포함하는 파일입니다.

다음은 Python 모듈을 만들고 사용하는 간단한 예입니다.

먼저 /home/labex/project/ 경로에 my_module.py라는 새 파일을 만듭니다. 이것이 우리의 모듈 파일이 될 것입니다.

my_module.py 파일에서 콘솔에 인사를 출력하는 say_hello()라는 함수를 정의합니다.

def say_hello():
    print("Hello from my_module!")

파일을 저장합니다.

이제 새 Python 파일을 열거나 Python 인터프리터를 입력하고 import 문을 사용하여 my_module 모듈을 가져옵니다.

import my_module

my_module 모듈에서 say_hello() 함수를 사용하려면 다음과 같이 호출할 수 있습니다.

my_module.say_hello()  ## Output: "Hello from my_module!"

이것이 전부입니다! Python 모듈을 성공적으로 만들고 사용했습니다.

ImportError 예외

모듈을 가져올 때 Python 은 현재 디렉토리와 PYTHONPATH 환경 변수에 나열된 모든 디렉토리에서 모듈 파일을 찾습니다. 모듈 파일을 찾을 수 없으면 ImportError 예외가 발생합니다.

존재하지 않는 모듈을 가져오려고 시도해 보겠습니다.

새 터미널 창을 열고 현재 디렉토리를 /home/labex/로 변경합니다.

cd /home/labex/

이제 새 Python 인터프리터를 열고 my_module 모듈을 가져오려고 시도합니다.

python3
import my_module

ImportError 예외가 발생해야 합니다.

ModuleNotFoundError: No module named 'my_module'

다음 줄을 Python 파일에 추가하여 디렉토리를 PYTHONPATH 환경 변수에 추가할 수 있습니다.

import sys
## my_module.py is located in the /home/labex/project/ directory
sys.path.append("/home/labex/project")

import my_module
my_module.say_hello()

sys.path.append() 함수는 import 문 전에 호출되어야 합니다.

Python 패키지 생성 방법

이 단계에서는 Python 패키지를 만들 것입니다. 패키지 (package) 는 Python 모듈을 포함하는 디렉토리입니다.

이전 단계의 예제를 업그레이드해 보겠습니다.

먼저 /home/labex/project/ 경로에 my_package라는 새 디렉토리를 만듭니다. 이것이 우리의 패키지 디렉토리가 될 것입니다.

/home/labex/project/my_package 디렉토리 내부에 __init__.py라는 새 파일을 만듭니다. 이것은 Python 에게 my_package 디렉토리를 패키지로 취급해야 한다고 알려주는 특수 파일입니다.

my_package 디렉토리 내부에 my_module.py라는 새 파일을 만듭니다. 이것이 우리의 모듈 파일이 될 것입니다.

my_module.py 파일에서 콘솔에 인사를 출력하는 say_hello()라는 함수를 정의합니다.

def say_hello():
    print("Hello from my_module!")

이제 새 Python 파일을 열거나 Python 인터프리터를 입력하고 my_package 패키지를 가져옵니다.

import my_package

my_module 모듈에서 say_hello() 함수를 사용하려면 다음과 같이 호출할 수 있습니다.

my_package.my_module.say_hello()  ## Output: "Hello from my_module!"

이것이 전부입니다! 모듈이 있는 Python 패키지를 성공적으로 만들고 사용했습니다.

다음은 프로젝트의 디렉토리 구조입니다.

my_package/
├── __init__.py
└── my_module.py

이 예제는 패키지를 만들고 점 표기법을 사용하여 해당 모듈에 액세스하는 방법을 보여줍니다. my_package 패키지에는 my_module 모듈이 포함되어 있으며, my_package.my_module.say_hello()를 호출하여 my_module 모듈에서 say_hello() 함수에 액세스할 수 있습니다.

이 컨텍스트에서 my_package는 Python 패키지이고 my_module은 Python 모듈입니다. 패키지를 사용하면 코드를 계층적 구조로 구성할 수 있으며, 이는 많은 모듈이 있는 더 큰 프로젝트에 유용할 수 있습니다.

요약하면, 패키지와 모듈의 주요 차이점은 패키지는 점 표기법을 사용하여 액세스할 수 있는 모듈의 모음인 반면, 모듈은 함수, 클래스 및 변수의 정의를 포함하는 독립 실행형 파일이라는 것입니다.

써드파티 패키지 사용법

Python 서드 파티 패키지는 Python 핵심 개발 팀 외부의 개인 또는 조직에서 개발 및 유지 관리하는 패키지입니다. 내장 및 표준 라이브러리 모듈과 동일한 방식으로 가져와 사용할 수 있지만 별도로 설치해야 합니다.

Python 에는 다양한 주제와 목적을 다루는 많은 서드 파티 패키지가 있습니다. 예를 들어 과학 컴퓨팅을 위한 numpy, 데이터 분석을 위한 pandas, HTTP 요청 작업을 위한 requests, 웹 스크래핑을 위한 beautifulsoup4 등이 있습니다.

Python 이 매우 인기 있는 가장 중요한 이유는 서드 파티 패키지가 풍부하기 때문입니다.

서드 파티 패키지를 설치하려면 기본적으로 Python 에 포함된 pip 패키지 관리자를 사용할 수 있습니다. 예를 들어 requests 패키지를 설치하려면 다음 명령을 실행할 수 있습니다.

pip install requests

conda와 같은 다른 패키지 관리자를 사용하여 서드 파티 패키지를 설치할 수도 있습니다. 자세한 내용은 Anaconda를 참조하십시오.

패키지가 설치되면 Python 코드에서 가져와 사용할 수 있습니다. 예를 들어 requests 패키지를 사용하여 HTTP 요청을 보내고 응답을 출력하는 방법은 다음과 같습니다.

python3
import requests

response = requests.get("https://www.example.com")
print(response.text)

이 코드는 requests 패키지를 사용하여 URL https://www.example.com에 HTTP GET 요청을 보낸 다음 응답 텍스트를 콘솔에 출력합니다.

requests.get() 함수는 지정된 URL 로 HTTP GET 요청을 보내고 응답 데이터를 포함하는 HTTPResponse 객체를 반환합니다. 응답 객체에는 응답 데이터에 액세스하고 조작할 수 있는 다양한 속성 및 메서드가 있습니다.

이 경우 response.text 속성은 응답 본문을 문자열로 포함합니다. print(response.text)를 호출하면 응답 본문이 콘솔에 출력됩니다.

Python 서드 파티 패키지는 일반적인 작업에 대한 즉시 사용 가능한 솔루션을 제공하고 Python 의 기능을 확장하므로 Python 생태계의 중요한 부분입니다. 처음부터 모든 것을 구축하는 대신 프로젝트에서 사용할 수 있는 사전 구축된 솔루션을 제공하여 시간과 노력을 절약할 수 있습니다.

서드 파티 패키지를 사용하여 절약되는 시간과 노력 외에도 더 안정적이고 유지 관리 가능한 코드를 작성하는 데 도움이 될 수 있습니다. 잘 테스트되고 널리 사용되는 패키지를 사용하면 다른 사람의 작업을 활용하고 특정 문제 해결에 집중할 수 있습니다.

전반적으로 Python 서드 파티 패키지는 Python 의 기능을 확장하고 일반적인 작업을 해결하는 데 중요한 리소스입니다. 시간과 노력을 절약하고, 다른 도구 및 라이브러리와 통합하는 데 도움을 주며, 코드의 안정성과 유지 관리 가능성에 기여할 수 있습니다.

요약

이 랩에서는 Python 모듈과 패키지를 사용하여 코드를 구성하고 재사용하는 방법을 배웠습니다. 프로그램에서 모듈과 패키지를 가져와 사용하는 방법을 살펴보고, 자체 패키지를 만드는 방법도 배웠습니다. 모듈과 패키지를 사용하면 더 깔끔하고 유지 관리하기 쉬운 코드를 작성할 수 있습니다.