파이썬 & 오픈소스 개발 Tip과 강좌

이곳은 파이썬과 여러 오픈소스 기반 프레임워크 관련 Tip과 강좌 게시판 입니다. 관련 개발을 진행하면서 알아내신 Tip이나 강좌와 새로운 소식을 적어 주시면 다른 공부하는 분들에게 큰 도움이 됩니다. 감사합니다. SQLER.com은 개발자와 IT전문가의 지식 나눔을 실천하기 위해 노력하고 있습니다.

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

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

 

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

 

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

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

 

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 강좌를 따라오셨다면, WSL을 사용 중일겁니다. 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에 위치합니다.)

 

참조링크

개발자 커뮤니티 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 Python 무료 강좌 - 기초, 중급, 머신러닝(2021년 1월 업데이트) 코난(김대우) 2021.01.01 401
103 Python 중급 강좌 - 9. 비동기 작업(Asynchronous operations): asyncio 코난(김대우) 2021.01.03 232
102 Python 중급 강좌 - 8. 외부 리소스 관리(Managing external resources): with 코난(김대우) 2021.01.03 125
101 Python 중급 강좌 - 7. 파일작업(File read/write) file 코난(김대우) 2021.01.03 146
100 Python 중급 강좌 - 6. 파일시스템(File system) 관리 코난(김대우) 2021.01.03 140
99 Python 중급 강좌 - 5. 다중상속(Mixins - multiple inheritance) 코난(김대우) 2021.01.03 84
98 Python 중급 강좌 - 4. 상속(Inheritance) 코난(김대우) 2021.01.03 36
97 Python 중급 강좌 - 3. 클래스(Class) 코난(김대우) 2021.01.03 48
96 Python 중급 강좌 - 2. 람다(Lamda) file 코난(김대우) 2021.01.03 66
95 Python 중급 강좌 - 1. Python 스타일 가이드: 서식(Formatting)과 린팅(Linting) file 코난(김대우) 2021.01.02 90
94 Python 초급 강좌 목차 - 19. 코드에서 중요한 키(패드워드) 관리 - dotenv 코난(김대우) 2021.01.02 48
93 Python 초급 강좌 목차 - 18. 데코레이터(Decorators) 코난(김대우) 2021.01.02 47
92 Python 초급 강좌 목차 - 17. JSON 데이터 처리 file 코난(김대우) 2021.01.02 95
91 Python 초급 강좌 목차 - 16. 외부 웹서비스 API 호출 file 코난(김대우) 2021.01.02 106
» Python 초급 강좌 목차 - 15. 패키지(Package): import, pip 코난(김대우) 2021.01.02 48
89 Python 초급 강좌 목차 - 14. 함수 파라미터(Parameter) 코난(김대우) 2021.01.02 44
88 Python 초급 강좌 목차 - 13. 함수(Function) 코난(김대우) 2021.01.02 33
87 Python 초급 강좌 목차 - 12. 반복문(Loop): for, while 코난(김대우) 2021.01.02 35
86 Python 초급 강좌 목차 - 11. 컬렉션(Collection): list, array, dictionary file 코난(김대우) 2021.01.02 48
85 Python 초급 강좌 목차 - 10. 조건문(Condition):3 복잡한 조건 처리 코난(김대우) 2021.01.01 36
84 Python 초급 강좌 목차 - 9. 조건문(Condition):2 다중 조건 처리 코난(김대우) 2021.01.01 55





XE Login