[python] 패키지와 모듈

728x90

1. 모듈

파이썬에서 모듈은 코드를 구성하는 하나의 파일로서, 함수, 변수, 클래스 등의 정의들을 담고 있는 파일을 말합니다. 모듈을 사용하여 관련된 코드를 구조화하고 재사용 가능한 단위로 만들 수 있습니다. 이러한 모듈화는 코드의 가독성과 유지보수성을 높여주며, 코드를 논리적인 블록으로 나눌 수 있습니다

 

모듈은 쓰고자 하는 파일과 같은 경로에 있거나 파이썬 라이브러리들이 모여있는 폴더에 있어야 사용가능합니다.

 

사용방법은 해당 모듈을 import함으로써 사용할 수 있습니다.

예시로 보여드리겠습니다.

theater_module.py

def price(people):
    print("{0}명 가격은{1}입니다.".format(people,people*10000))
    
def price_morning(people):
    print("{0}명 조조할인 가격은{1}입니다.".format(people,people*6000))
    
def price_soldier(people):
    print("{0}명 군인할인 가격은{1}입니다.".format(people,people*4000))

 

1) 모듈이름 그대로 쓰기

import theater_module

theater_modul.price(3) #3명 일반 가격 #출력 : 3명 가격은30000입니다.

theater_modul.price_morning(4) #4명 조조할인 가격 #출력 : 4명 조조할인 가격은24000입니다.

theater_modul.price_soldier(5) #5명 군인할인 가격 #출력 : 5명 군인할인 가격은20000입니다.

2) 별명 만들기

import theater_module as mv

mv.price(3) #3명 일반 가격 #출력 : 3명 가격은30000입니다.

mv.price_morning(4) #4명 조조할인 가격 #출력 : 4명 조조할인 가격은24000입니다.

mv.price_soldier(5) #5명 군인할인 가격 #출력 : 5명 군인할인 가격은20000입니다.

3) from 모듈명 import * 사용

from theater_module import * 

price(3) #3명 일반 가격 #출력 : 3명 가격은30000입니다.

price_morning(4) #4명 조조할인 가격 #출력 : 4명 조조할인 가격은24000입니다.

price_soldier(5) #5명 군인할인 가격 #출력 : 5명 군인할인 가격은20000입니다.

4) from 모듈명 import 특정 함수 사용

이방법은  특정한 함수만 지정하기 때문에 해당 함수가 아닌 구문으로 실행하면 에러가 발생합니다.

 

from theater_module import price,price_morning

price(3) #3명 일반 가격 #출력 : 3명 가격은30000입니다.

price_morning(4) #4명 조조할인 가격 #출력 : 4명 조조할인 가격은24000입니다.

price_soldier(5) #5명 군인할인 가격 #출력 : 애러발생

 

 

from 모듈명 import를 사용했을 때 주의해야 할 점이 있습니다.

 

두개 이상의 모듈을 import하게 했을 때 두 모듈에 동일한 이름의 함수가 있다면 실행파일에서는 하나만 실행된다는 것입니다. 

 

예를 들어 설명하겠습니다.

 

위의 theater_module.py 외에 극장 임차료를 출력하는 모듈을 하나 더 만들어보겠습니다.

 

theater.py

def price(location):
    print("극장건물 {0}개의 임차료는 {1}입니다.".format(location,location*100000000))

 

실행파일

from theater import * 
from theater_module import *


price(3) #3명 일반 가격 #출력 : 3명 가격은30000입니다.

price_morning(4) #4명 조조할인 가격 #출력 : 4명 조조할인 가격은24000입니다.

price_soldier(5) #5명 군인할인 가격 #출력 : 5명 군인할인 가격은20000입니다.

import 모듈의 위치를 변경했을 때

 

from theater_module import *
from theater import * 


price(3) #3명 일반 가격 #출력 : 극장건물 3개의 임차료는 300000000입니다.

price_morning(4) #4명 조조할인 가격 #출력 : 4명 조조할인 가격은24000입니다.

price_soldier(5) #5명 군인할인 가격 #출력 : 5명 군인할인 가격은20000입니다.

5) __all__ 변수

__all__은 파이썬 모듈에서 사용되는 특별한 변수로, 해당 모듈에서 공개할 객체의 목록을 정의하는 데 사용됩니다. 주로 from module import * 구문을 사용할 때 임포트될 객체들을 명시적으로 지정하기 위해 사용됩니다.

 

쉽게 말해서 __all__ 변수는 * 사용시 공개설정에 관한 변수입니다.

 

 

__all__ 을 쓰지않은 상태에서 from 패키지 import 모듈로 모듈 내부의 클래스나 함수를 작동시킬 수 있습니다.

from travel import batnam

trip = batnam.BatnamPakage()

trip.detail() #출력 : [베트남 패키지 3박4일] 다낭 효도여행 60만원

 

그러나 모듈명 대신에 모든값을 의미하는 *을 입력하면 작동이 되지 않습니다.

 

예시를 보여드리면 아래와 같습니다.

실행파일

from travel import *

trip = batnam.BatnamPakage()

trip.detail() #에러발생

trip2 = thailand.ThailandPakage()
trip2.detail() #에러발생

 

이는 공개설정이 되지않았기때문에 발생하는 것입니다.

 

__all__ 을 사용해보겠습니다.

 

입력은 __init__.py에서 작성합니다.

 

__init__.py

__all__ = ["batnam","thailand"] # 베트남,태국 모듈 공개 설정

실행파일

from travel import *

trip = batnam.BatnamPakage()

trip.detail() #출력 : [베트남 패키지 3박4일] 다낭 효도여행 60만원

trip2 = thailand.ThailandPakage()
trip2.detail() #출력 : [태국 패키지 3박 5일] 방콕 파타야 여행 (야시장 투어) 50만원

 

에러가 나던 파일과 내용이 동일한데 올바르게 출력이 되는 것을 확인할 수 있습니다.

 

6)__name__ 변수

파이썬에서는 __name__ 내장 변수를 활용해서 기능이 모듈내에서 실행되는지 외부에서 실행되는지 확인할 수 있습니다.

 

파이썬에서 모듈이 직접 실행될 때 __name__ 변수의 값은 '__main__'이 됩니다. 따라서 모듈이 직접 실행되는지 다른 모듈에서 import하여 사용되는지 여부를 __name__ 변수를 통해 확인할 수 있습니다.

 

thailand.py

class ThailandPakage:
    def detail(self):
        print("[태국 패키지 3박 5일] 방콕 파타야 여행 (야시장 투어) 50만원")
        
if __name__=="__main__": #모듈내에서 실행시
    print("Thailand 모듈을 직접실행")
    print("이 문장은 모듈을 직접실행시킬때만 작동합니다.")
    trip = ThailandPakage()
    trip.detail()
else: #모듈외에서 실행시
    print("Thailand 외부에서 모듈 호출")

thailand.py내에서 run한 결과입니다.

 

 

아래는 실행파일에서 run한 결과입니다.

 

 

 

결과가 다르게 나오는 것을 확인할 수 있습니다.

 

이렇게 함으로써 모듈을 직접 실행할 때만 실행되어야 하는 코드와 다른 모듈에서 사용되는 코드를 구분할 수 있습니다.

 

2. 패키지

파이썬에서 패키지는 모듈들을 하나의 디렉토리에 구조화하여 관리하는 방법을 말합니다

쉽게 말해서 모듈들을 모아놓은 집합입니다.

 

패키지를 사용하면 관련된 모듈들을 논리적으로 그룹화하고, 모듈 이름의 충돌을 방지하며, 코드의 가독성과 유지보수성을 높일 수 있습니다.

 

파이썬에서 패키지를 만들기 위해서는 디렉토리를 생성하고 그 안에 __init__.py라는 빈 파일을 만들어야 합니다.

이 __init__.py 파일은 해당 디렉토리를 패키지로 인식시키는 역할을 합니다.

 

travel이란 폴더를 만들어 폴더안에 thailand.py라는 파일과 batnam.py라는 파일과 __init__.py 파일을 만들어보겠습니다.

 

thailand.py

class ThailandPakage:
    def detail(self):
        print("[태국 패키지 3박 5일] 방콕 파타야 여행 (야시장 투어) 50만원")

batnam.py

class BatnamPakage:
    def detail(self):
        print("[베트남 패키지 3박4일] 다낭 효도여행 60만원")

 

__init__.py에는 아무것도 작성하지 않습니다.

 

 

실행파일

import travel.thailand
import travel.batnam

trip = travel.thailand.ThailandPakage()

trip.detail() #출력 : [태국 패키지 3박 5일] 방콕 파타야 여행 (야시장 투어) 50만원


trip2 = travel.batnam.BatnamPakage()

trip2.detail() #출력 : [베트남 패키지 3박4일] 다낭 효도여행 60만원

1) pip

pip는 파이썬 패키지를 설치하고 관리하는 패키지 관리자입니다. 파이썬에서 외부 라이브러리나 모듈을 사용하려면 해당 라이브러리를 먼저 설치해야 합니다. 이때 pip를 사용하면 빠르고 간편하게 원하는 라이브러리를 설치할 수 있습니다.

 

기본적인 패키지외에 타인이 만들어놓은 패키지 파일은 pypi 사이트에서 찾을 수 있습니다.

 

구글에서 pypi를 입력하시면 아래와 같은 사이트가 나옵니다.

 

사이트에 접속하시면 아래와 같은 화면이 나옵니다.

위 빨간색 네모박스에 패키지를 검색하셔도 되고 회색 박스에 있는 글자를 클릭하여 모든 패키지를 볼 수도 있습니다.

 

저는 웹스크래핑에 사용되는 beautifulsoup을 검색하겠습니다.

 

 

두번째 패키지를 클릭해보겠습니다.

 

 

빨간색 네모박스는 설치하는 방법입니다. 옆의 버튼을 클릭하면 바로 복사하는것도 가능합니다.

 

초록색 네모박스는 간단한 설명과 예시입니다.

 

 

pip를 사용하여 패키지를 설치하는 방법은 간단합니다. 터미널 또는 명령 프롬프트에서 다음과 같이 입력합니다

pip install 패키지이름

 

 

예시입니다.

 

아래처럼 설치가 되었습니다.

 

이미 설치되어 있는 패키지를 업그레이드하려면 다음과 같이 입력합니다

 

pip install --upgrade 패키지이름

 

또한, pip를 사용하여 설치된 패키지 목록을 확인하거나 삭제하는 등의 기능도 제공됩니다. 

 

예를 들어, 설치된 패키지 목록을 확인하려면 다음과 같이 입력합니다:

pip list

 

삭제하는 방법은 아래와 같이 입력합니다.

 

pip uninstall 패키지명

그리고 패키지 정보를 알수 있는 기능도 있습니다.

 

pip show 패키지이름

 

예를 들어 설치한 beautifulsoup4에 대한 정보를 확인해보겠습니다.

 

pip show beautifulsoup4

출력)

'PYTHON Programming > Python' 카테고리의 다른 글

[python] 외장함수  (0) 2024.05.21
[python] 내장함수  (0) 2024.05.21
[python] 예외처리  (0) 2024.05.21
[python] print와 pass  (0) 2024.05.21
[python] 상속  (0) 2024.05.20