2023년 6월 업데이트

 

안녕하세요. SQLER의 코난 김대우입니다. 

이번 강좌에서는, Python 초급 강좌 목차 - 15. 패키지(Package): import, pip를 진행토록 하겠습니다.

 

SQLER에서 진행되는 전체 Python / 머신러닝 강좌 목록

 

코드를 실행하기 위해서는, vscode에서 새로운 파일을 만들고 실행하시면 됩니다.

예를 들어, 15_package.py를 생성하고 코드를 실행합니다.

 

 

TL;DR

Python의 모듈과 패키지에 대해 소개하고, 패키지 설치 절차와 코드 재사용 방안 및 virtual environment로 독립 Python 환경을 구성하는 방안에 대해 살펴봅니다. 
 

 

Python 초급 강좌 목차 - 15. 패키지(Package): import, pip

 

Python 모듈(Module)

Python 모듈을 사용하면 함수와 같은 재사용 가능한 코드를 별도의 파일에 저장할 수 있습니다. 모듈은 import 구문을 사용하여 참조할 수 있습니다.

 

모듈 생성

예를 들어, 다음 코드로 helpers.py 파일을 vscode에서 생성하고 저장합니다.

def display(message, is_warning=False):
    if is_warning:
        print('Warning!!')
    print(message)

 

모듈 import 후 사용

위에서 생성한 helpers 모듈을 아래처럼 import 후 사용 가능합니다.

# 모듈을 네임스페이스로 import
import helpers
helpers.display('Not a warning')

# 모든 항목들을 현재의 네임스페이스로 import
from helpers import *
display('Not a warning')

# 특정 항목들을 현재의 네임스페이스로 import
from helpers import display
display('Not a warning')

이렇게 모듈로 제작해 만든 함수나 클래스(이후 SQLER의 중급강좌에서 소개 예정)들을 만들고, 어디서나 재사용할 수 있습니다. 

(import * 구문은 대부분의 린터에서 에러를 출력하고, 혼자 하는 실험적인 코드가 아니면 잘 사용하지 않습니다. 반드시 사용하는 모듈만 명시해서 import 하는 습관을 들이시는 게 좋습니다.)

 

패키지(Packages)

배포 패키지(Distribution packages)는 클래스 및 함수와 같은 리소스를 포함하는 외부 저장소의 파일입니다. 생성하는 대부분의 모든 Python 응용 프로그램은 하나 이상의 패키지를 사용합니다. 패키지에서 import는 생성 한 모듈과 동일한 구문을 따릅니다. Python 패키지 인덱스에는 pip를 사용하여 설치할 수 있는 전체 패키지 목록이 있습니다.

이렇게, 다른 회사나 사람이 생성한 패키지를 가져와 내 코드에서 모듈로 import 하고 사용할 수 있습니다.

SQLER 강좌를 따라오셨다면, 윈도+conda 환경이나 WSL+conda 환경을 사용 중일 겁니다. Anaconda prompt나 bash shell에서 다음 pip 명령을 수행해 외부 패키지를 가져와 현재 python환경에 설치 가능합니다.

(주의, conda environment를 사용 중이면, 현재 conda environment가 activate 되었는지 다시 확인하시고, pip로 패키지를 추가할 때도, activate 된 conda environment에서 설치해야 정상적으로 동작합니다. 참조링크: 개발자 커뮤니티 SQLER.com - Python 초급 강좌 목차 - 1. Python 개발 환경 구성 )

 

# bash shell 또는 윈도의 명령프롬프트에서 실행
pip install colorama

 

패키지를 설치하는 또 다른 일반적인 방법은 파일에 설치할 패키지를 적어두고 install 하는 것입니다.

requirements.txt을 vscode에서 생성하고 아래 내용을 넣습니다.

colorama

 

이어서, 다음 명령을 수행해, 파일 내의 package들을 설치합니다. 실제 프로젝트에서 설치할 파일명이 많을 경우 대부분 사용되며, version까지 명시해 package 버전 충돌 이슈도 이 방법으로 해결합니다.

# bash shell 또는 윈도 명령프롬프트에서 실행
pip install -r requirements.txt

 

이제 아래와 같은 colorama 패키지를 사용하는 코드를 실행 가능합니다.

import colorama

colorama.init()
print(colorama.Fore.RED + 'This is red')

from colorama import *

init()
print(Fore.BLUE + 'This is blue')

from colorama import init, Fore
print(Fore.GREEN + 'This is green')

이런 식으로 앞으로 코드에서 외부 패키지가 보이면, pip 명령 등으로 설치하고 진행하면 됩니다.

이렇게 편리한 python의 패키지 관리자에도 치명적인 단점이 있습니다. 바로, 패키지와 버전관리 문제입니다.

 

Virtual environments

기본옵션으로 python을 설치했다면, 패키지 설치 시 패키지들은 전역적으로(globally) 설치됩니다. 여러 패키지가 쌓이면서 패키지 버전관리가 어려워지고, 패키지간 충돌이 일어날 가능성이 높아집니다. 이럴 때, Virtual environments을 사용하면 격리된 디렉토리에 독립적인 환경을 구성하고, 이 독립된 Python환경에 패키지를 설치할 수 있습니다. 이를 통해 Python 패키지들의 버전을 더 잘 관리할 수 있습니다.

(참고하세요 - SQLER의 지난 환경구성 강좌 - 개발자 커뮤니티 SQLER.com - Python 초급 강좌 목차 - 1. Python 개발 환경 구성 - 에서 소개해 드린 Conda 환경과 유사하지만, 더 가볍고 일반적으로 중소 규모의 프로젝트에서 사용됩니다.

이후 진행될 머신러닝 강좌나, 좀 더 다양한 기능의 python environment 관리를 위해 conda를 쓰실 것을 권장해 드립니다.)

 

Virtual environments 설치 / 생성

bash shell(또는 윈도 명령프롬프트)에서 다음 명령을 수행해 설치합니다.

pip install virtualenv

 

리눅스/macOS일 경우 아래 명령을 사용해 독립된 Python 환경 디렉토리를 생성합니다.

virtualenv <디렉토리이름>

 

윈도일경우 아래 명령을 수행해 독립된 Python 환경 디렉토리를 생성합니다.

python -m venv <폴더이름>

 

virtualenv 사용

리눅스(bash shell) 또는 macOS일 경우, 아래 명령을 실행해 사용합니다.

# 해당 폴더로 이동해 activate 실행
cd <디렉토리이름>/bin
source activate

 

윈도일 경우 아래 명령을 수행합니다.

<폴더이름>\Scripts\Activate.bat

 

위의 방법으로 virtualenv를 activate 시킨 후, 똑같이 pip 설치 명령을 이용가능하며, 설치된 패키지는 이 virtualenv 안에서만 독립적으로 사용됩니다. (참고로, pip 등으로 설치된 패키지는 <venv디렉토리>/lib/python3.X/site-packages에 위치합니다.)

 

 

파이썬 강좌 책 구매

강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다. 

 

책구매 링크: 챗GPT와 함께하는 파이썬 & 머신러닝 코딩 마스터 

파이썬-책구매링크.png

 

참조링크

개발자 커뮤니티 SQLER.com - Python 무료 강좌 - 기초, 중급, 머신러닝

c9-python-getting-started/python-for-beginners/15 - Packages at master · CloudBreadPaPa/c9-python-getting-started (github.com)

 

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 38045
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 20666
98 Python 중급 강좌 - 4. 상속(Inheritance) 코난(김대우) 2021.01.03 344
97 Python 중급 강좌 - 3. 클래스(Class) 코난(김대우) 2021.01.03 403
96 Python 중급 강좌 - 2. 람다(Lamda) file 코난(김대우) 2021.01.03 545
95 Python 중급 강좌 - 1. Python 스타일 가이드: 서식(Formatting)과 린팅(Linting) file 코난(김대우) 2021.01.02 1098
94 Python 초급 강좌 목차 - 19. 코드에서 중요한 키(패스워드) 관리 - dotenv 코난(김대우) 2021.01.02 964
93 Python 초급 강좌 목차 - 18. 데코레이터(Decorators) 코난(김대우) 2021.01.02 338
92 Python 초급 강좌 목차 - 17. JSON 데이터 처리 file 코난(김대우) 2021.01.02 817
91 Python 초급 강좌 목차 - 16. 외부 웹서비스 API 호출 file 코난(김대우) 2021.01.02 945
» Python 초급 강좌 목차 - 15. 패키지(Package): import, pip 코난(김대우) 2021.01.02 411
89 Python 초급 강좌 목차 - 14. 함수 파라미터(Parameter) 코난(김대우) 2021.01.02 399
88 Python 초급 강좌 목차 - 13. 함수(Function) 코난(김대우) 2021.01.02 542
87 Python 초급 강좌 목차 - 12. 반복문(Loop): for, while 코난(김대우) 2021.01.02 324
86 Python 초급 강좌 목차 - 11. 컬렉션(Collection): list, array, dictionary file 코난(김대우) 2021.01.02 327
85 Python 초급 강좌 목차 - 10. 조건문(Condition):3 복잡한 조건 처리 코난(김대우) 2021.01.01 358
84 Python 초급 강좌 목차 - 9. 조건문(Condition):2 다중 조건 처리 코난(김대우) 2021.01.01 394
83 Python 초급 강좌 목차 - 8. 조건문(Condition):1 (IF-ELSE) 코난(김대우) 2021.01.01 362
82 Python 초급 강좌 목차 - 7. 에러 핸들링(Error Handling) file 코난(김대우) 2021.01.01 352
81 Python 초급 강좌 목차 - 6. 날짜와 시간 데이터 처리 코난(김대우) 2021.01.01 387
80 Python 초급 강좌 목차 - 5. 숫자(Numeric) 데이터 처리 코난(김대우) 2021.01.01 324
79 Python 초급 강좌 목차 - 4. 문자열(String) 데이터 처리 코난(김대우) 2021.01.01 429





XE Login