반응형
모듈 (Module)
모듈은 파이썬 코드의 논리적인 단위로, 관련된 함수, 클래스, 변수 등을 하나의 파일에 모아놓은 것입니다.
- 모듈을 사용하면 코드의 재사용성과 유지보수성을 높일 수 있으며, 코드의 구조를 더 체계적으로 관리할 수 있습니다.
- 하나의 .py 파일이 하나의 모듈을 의미합니다.
모듈 가져오기
- import 키워드를 사용하면 전체 모듈을 불러올 수 있습니다.
import math
print(math.sqrt(16)) # Output: 4.0
- from 키워드를 사용하면 모듈에서 특정 함수, 클래스 등을 가져올 수 있습니다.
from math import sqrt
print(sqrt(16)) # Output: 4.0
- as 키워드를 사용하여 모듈이나 항목에 별칭(alias)을 지정할 수 있습니다.
import numpy as np
print(np.array([1, 2, 3])) # Output: [1 2 3]
표준 라이브러리와 사용자 정의 모듈
표준 라이브러리
- 표준 라이브러리는 파이썬 설치 시 기본으로 제공되는 모듈 모음입니다
import datetime
now = datetime.datetime.now()
print(now) # 현재 날짜와 시간 출력
import os
current_directory = os.getcwd()
print(current_directory) # 현재 작업 디렉토리 출력
사용자 정의 모듈
Example 1. 모듈 파일 생성 (mymodule.py):
# mymodule.py
def greet(name):
return f"Hello, {name}!"
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def display(self):
return f"{self.name} is {self.age} years old."
Example 2. 모듈 사용
# main.py
import mymodule
print(mymodule.greet("Alice")) # Output: Hello, Alice!
person = mymodule.Person("Bob", 25)
print(person.display()) # Output: Bob is 25 years old.
# 특정 항목만 가져오기
from mymodule import greet, Person
print(greet("Charlie")) # Output: Hello, Charlie!
person = Person("Dave", 30)
print(person.display()) # Output: Dave is 30 years old.
패키지 (Package)
패키지는 관련된 모듈을 하나의 디렉터리로 묶은 것입니다.
- 패키지를 사용하면 모듈을 논리적으로 그룹화하고, 코드의 구조를 체계적으로 관리할 수 있습니다.
- 패키지 디렉터리에는 __init__.py 파일이 포함되어 있어야 합니다.
예시 Directory 구조
mypackage/
__init__.py
module1.py
module2.py
패키지 사용 예시
1. Package 디렉터리 및 모듈 생성
- mypackage/__init__.py (빈 파일이어도 됩니다)
- mypackage/module1.py
def function1():
return "Function 1 from Module 1"
- mypackage/module2.py
def function2():
return "Function 2 from Module 2"
2. Package 사용
# main.py
from mypackage import module1, module2
print(module1.function1()) # Output: Function 1 from Module 1
print(module2.function2()) # Output: Function 2 from Module 2
pip: Python Package 관리 도구
pip는 Python 패키지 관리 도구로, 패키지를 설치하고 관리하는 데 사용됩니다.
Package install (패키지 설치)
pip install 패키지이름
# Example
pip install requests
Package Uninstall (패키지 제거)
pip uninstall 패키지이름
pip uninstall requests
설치된 패키지 목록 확인
pip list
Package Management (패키지 관리)
requirements.txt 파일
- requirements.txt 파일은 프로젝트에 필요한 패키지 목록을 기록한 파일입니다.
- 이 파일을 사용하면 프로젝트에 필요한 모든 패키지를 쉽게 설치하고 관리할 수 있습니다.
- requirements.txt 파일 생성
pip freeze > requirements.txt
- requirements.txt 파일 내용 예시
requests==2.25.1
numpy==1.19.5
pandas==1.1.5
- requirements.txt 파일을 사용하여 패키지 설치
pip install -r requirements.txt
Virtual Environment (가상환경)
- 가상환경은 프로젝트별로 독립적인 Python 환경을 제공하여 패키지 충돌을 방지하고 일관된 개발 환경을 유지할 수 있도록 합니다.
- 이를 통해 서로 다른 프로젝트 간의 패키지 의존성 문제를 해결하고, 테스트 환경을 쉽게 관리할 수 있습니다.
venv 모듈 사용
1. 가상환경 생성
python -m venv 가상환경이름
# Example
python -m venv myenv
2-1. 가상환경 활성화 - Window ver.
가상환경이름\Scripts\activate
# Example
myenv\Scripts\activate
2-2. 가상환경 활성화 - macOS/Linux ver.
source 가상환경이름/bin/activate
# Example
source myenv/bin/activate
3. 가상환경 비활성화
deactivate
가상환경을 사용하는 이유?
그러면 왜 가상환경을 사용할까요? 이유를 한번 알아보겠습니다.
1. 프로젝트별 가상환경 설정
- 각 프로젝트마다 독립적인 가상환경을 설정하여, 패키지 충돌을 방지할 수 있습니다.
- 서로 다른 프로젝트에서 다른 버전의 패키지를 사용할 수 있으며, 각 프로젝트의 패키지 의존성을 관리할 수 있습니다.
2. 테스트 환경
- 개발 환경과 별도의 테스트 환경을 설정하여, 안정적인 코드 배포를 할 수 있습니다.
- 테스트 환경에서 코드와 패키지를 테스트하여, 실제 운영 환경에서 발생할 수 있는 문제를 미리 발견할 수 있습니다.
배포
배포는 작성한 모듈이나 패키지를 다른 개발자와 공유하기 위해 배포하는 과정입니다.
- 이를 통해 코드의 재사용성을 향상시키고, 커뮤니티에 기여할 수 있으며, 프로젝트를 효과적으로 관리할 수 있습니다.
- 조직 내에서 공통으로 사용하는 코드나 라이브러리를 패키지로 배포하거나, 오픈소스 커뮤니티에 유용한 패키지를 배포하여 기여할 수 있습니다.
배포 방법
1. PyPI (Python Package Index)
- PyPI는 Python 패키지를 공유하는 공식 저장소입니다.
- PyPI를 통해 다른 개발자들과 패키지를 공유하고 설치할 수 있습니다.
2. Package Build: sdist
- sdist는 패키지를 소스 배포 형태로 빌드하는 도구입니다.
- sdist 명령을 사용하여 패키지의 소스 배포판을 생성할 수 있습니다
python setup.py sdist
3. 패키지 업로드: twine
- twine은 패키지를 PyPI에 업로드하는 도구입니다.
- twine을 사용하면 안전하게 패키지를 업로드할 수 있습니다.
twine upload dist/*
반응형
'⌨️ Python' 카테고리의 다른 글
[Python] Advanced Data Type (고급 자료형) (0) | 2024.07.16 |
---|---|
[Python] Exception Handling - 예외처리 (0) | 2024.07.16 |
[Python] Database - 데이터베이스 (0) | 2024.07.15 |
[Python] 파일 입출력 (0) | 2024.07.15 |
[Python] Generator, Iterator, Yield (제너레이터, 이터레이터, Yield) (0) | 2024.07.15 |