Understanding and using modules and packages

1️⃣ 모듈의 정의 (Definition of Class modules)
2️⃣ 모듈 만들기 (Create new modules)
3️⃣ 모듈 불러오기 (Open modules)
4️⃣ __name__ 변수를 활용한 모듈 활용 (Using the __name__ Variable for Module Utilization)
5️⃣ 클래스가 포함된 모듈 불러오기 ( Modules with classes, variables, etc.)
6️⃣ 패키지의 정의 (Definition of packages)
7️⃣ 패키지 만들기 (Create new packages)
8️⃣이미 만들어진 패키지 설치하기 (Install existing packages)
1️⃣ 모듈의 정의
(Definition of Class modules)
파이썬에서는 함수, 클래스를 모듈화 하여 관리할 수 있다.
import 명령어를 사용하여 모듈을 불러오기 한다.
모듈은 함수나 클래스를 모아 놓은 파일을 말한다. 즉 다른 파이썬 프로그램에서 불러와 사용할 수 있게끔 만든 파이썬 파일이다.
풀어서 설명하자면 함수와 클래스가 포함된 첫번째 예제를 '모듈화'해놓은뒤 다른 프로그램에서 사용할수 있도록 불러오게 하는 것을 모듈이라고 한다.
모듈과 패키지를 사용하게 되면 이미 만들어진 프로그램을 그대로 사용하여 생산성을 높이는 장점이 있다.
hello_world.py : This file might contain a simple function:
def hello():
print("Hello, world!")
import_example.py : This file demonstrates how to import and use the hello_world module:
import hello_world
hello_world.hello()
2️⃣ 모듈 만들기 (Create new modules)
모듈을 만들려면 함수나 클래스를 포함한 파이썬 파일을 작성하고 .py 확장자로 저장하면 된다. 다음은 add와 sub 함수가 있는 모듈을 만드는 예제이다. add와 sub 함수만 있는 파일(모듈) mod1.py를 만들어 특정 디렉터리 (예: C:\doit) 에 저장한다
💡파이썬 확장자 .py로 만든 파이썬 파일은 모두 모듈이다.
1) mod1.py라는 파일 생성
#mod1.py
def add(a, b):
return a + b
def sub(a, b):
return a - b
2) 특정 디렉터리에 mod1.py 저장
파일을 원하는 디렉터리에 저장하자. 예를 들어, /content/mod1.py.
3️⃣ 모듈 불러오기 (Open modules)
모듈을 불러와 사용하는 방법을 단계별로 알아보자
1) Colab에서 mod1.py 불러오기
Google Colab에서 mod1.py 파일을 불러오려면 다음과 같은 방법을 사용한다
Google Colab에서 파일 업로드:
- 왼쪽 파일 탐색기에서 파일 업로드 버튼을 클릭하여
mod1.py파일을 업로드
Google Drive 연동 (로컬 개발 환경 -> 클라우드 개발환경)
로컬 환경에서 mod1.py 파일을 작성한다. 아래의 파일을 저장하고 Google Drive에 접속하여 원하는 폴더에 mod1.py 을 업로드한다.
# mod1.py
def add(a, b):
return a + b
def sub(a, b):
return a - b
Google Colab에서 Google Drive를 연동하여 업로드한 파일을 사용할 수 있도록 한다.
from google.colab import drive
drive.mount('/content/drive')
Google Drive에 저장된 파일을 Colab 환경으로 복사한다.
# Google Drive에서 Colab 환경으로 파일 복사
!cp /content/drive/MyDrive/path/to/mod1.py /content/
# 파일이 잘 복사되었는지 확인 (선택 사항)
!ls /content/
- 위 명령어에서
/content/drive/MyDrive/path/to/mod1.py는 Google Drive 내의mod1.py파일의 경로이다. 자신의 Google Drive 경로에 맞게 수정해야 한다./content/는 Colab 환경의 루트 디렉토리이다.
Google Drive에서 복사한 mod1.py 모듈을 Colab에서 불러와 사용한다.
# mod1.py 모듈 불러오기
import mod1
# add와 sub 함수 사용하기
print(mod1.add(3, 4)) # 출력: 7
print(mod1.sub(4, 2)) # 출력: 2
위의 작업들은 로컬 개발 환경에서 작성한 파이썬 모듈을 Google Colab과 같은 클라우드 개발 환경으로 가져와 사용하는 방법을 설명하였다. Google Drive를 통해 파일을 업로드하고, Colab에서 이를 불러와 사용할 수 있도록 하는 일련의 과정이다. 이를 통해 로컬과 클라우드 환경을 원활하게 연결하고, 동일한 코드를 클라우드 환경에서 실행할 수 있다.
2) import mod1이라고 입력하여, mod1.py 불러오기
✅ 모듈 불러오기
import mod1 #import 모듈이름
# add와 sub 함수 사용하기
print(mod1.add(3, 4)) # 출력: 7
print(mod1.sub(4, 2)) # 출력: 2
Import : 이미 만들어 놓은 파이썬 모듈을 사용할 수 있게 해주는 명령어이다.
실수로 import mod1.py라고 입력하지 않도록 주의하자.
✅ from 구문을 이용해서 모듈 이름을 생략하기
from mod1 import add, sub
print(add(3,4)) #위의 코드와 비교했을때 mod1.add대신에 add만 사용하여 코드를 줄임
print(sub(2,1))
7 #결과
1 #결과

mod1. py 파일에 있는 add 함수를 사용하기 위해서는 mod1.add처럼 모듈 이름 뒤에 도트 연산자(.)를 붙이고 함수 이름을 쓰면 된다. (예: from 모듈이름 import 모듈함수)
3) mod1.py 파일에 있는 add 함수사용
위의 방법대로라면 mod1.py 파일의 add 함수 하나만 사용할 수 있다. add 함수와 sub 함수 둘 다 모듈 이름을 붙이지 않고 사용하려면 어떻게 해야 할까
from mod1 import add,sub #1번째 방법
from mod1 import * #2번째 방법
첫번째 방법은 쉼표(,)로 구분하여 필요한 함수를 불러오는 것이다.
두번째 방법은 * 문자를 사용하는 것이다. * (asterisk) 문자는 ‘모든 것’이라는 뜻인데, 파이썬에서도 같은 의미로 사용한다. 따라서 from mod1 import *은 mod1 모듈의 모든 함수를 불러와 사용하겠다는 뜻이다.
4️⃣ __name__ 변수를 활용한 모듈 활용
(Using the __name__ Variable for Module Utilization)
if __name__ == "__main__": 구문을 사용하여 mod1.py 파일을 수정하는 방법을 알아보자. 이 구문은 파일이 직접 실행될 때만 특정 코드를 실행하도록 한다. 이를 통해 mod1.py 직접 실행될 때와 다른 파일에서 모듈로 불러와질 때의 동작을 구분하여 다른 파일에서 모듈로 불러와질 때는 해당 코드가 실행되지 않도록 할 수 있다.
💡__name__ 변수란? : 파이썬의 __name__ 변수는 파이썬이 내부적으로 사용하는 특별한 변수 이름이다. 만약 C:\doit>python mod1.py처럼 직접 mod1.py 파일을 실행할 경우, mod1.py의 __name__ 변수에는 __main__ 값이 저장된다. 하지만 파이썬 셸이나 다른 파이썬 모듈에서 mod1을 import할 경우에는 mod1.py의 __name__ 변수에 mod1.py의 모듈 이름인 mod1이 저장된다.
# mod1.py
def add(a, b):
return a + b
def sub(a, b):
return a - b
if __name__ == "__main__":
print(add(3, 4)) # 출력: 7
print(sub(4, 2)) # 출력: 2
pythonmod1.py를 직접 실행할 때:
__name__변수는"__main__"값을 가지게 되며,if __name__ == "__main__":구문 안의 코드가 실행됩니다.다른 파일에서
mod1모듈을 불러와 사용할 때:
__name__변수는"mod1"값을 가지게 되며,if __name__ == "__main__":구문 안의 코드가 실행되지 않습니다.
이제 이 파일을 직접 실행하거나 다른 파일에서 불러오는 예제를 통해 확인해보자
$ python mod1.py
7
2
- 직접 실행 예제
# 다른 파일 (예: test_mod1.py)에서 모듈로 불러오기
import mod1
print(mod1.add(10, 5)) # 출력: 15
print(mod1.sub(10, 5)) # 출력: 5
- 다른 파일에서 모듈로 불러오는 예제
5️⃣ 클래스가 포함된 모듈 불러오기 ( Modules with classes, variables, etc)

위에서 배운 내용들은 함수가 포함된 모듈이었고 이번엔 클래스가 포함된 모듈을 불러오는 방법을 공부해보자. 클래스도 함수와 마찬가지이다.
아래는 mod2.py 클라스가 포함된 파일이다. 저장 후 같은 디렉토리로 드래그해 파일을 불러온다.
#mod2.py
import math
class Circle():
def calculate_circle_area(self,radius):
if radius < 0:
return "반지름은 음수가 될 수 없습니다."
else:
area = math.pi * radius ** 2
return area
!cat mod2.py
from mod2 import Circle
위의 과정을 거치면 mod2에서 정의된 클라스를 모두 사용할 수 있게된다.
a = Circle()
print(a.calculate_circle_area(5))
#78.53981633974483
a 변수를 Circle() 클라스로 정의한 후 프린트하면 반지름을 구할수 있다. 이런 원리로 모듈을 불러와서 모듈에서 정의한 함수, 클래스를 사용할 수 있다. 더 나아가 계산과학 라이브러리, 머신러닝 알고리즘등을 사용할 때도 같은 방법으로 불러올 수 있다.
✅다른 디렉터리에 있는 모듈을 불러오는 방법
우리는 지금까지 해당 모듈이 있는 디렉터리로 이동한 후에야 그 모듈을 사용할 수 있었다. 이번에는 모듈을 저장한 디렉터리로 이동하지 않고 모듈을 불러와서 사용하는 방법에 대해 알아보자.
먼저 다음과 같이 mod3.py 파일을 다른 디렉토리로 이동시킨다. 그리고 sys.path.append 사용하여 모듈을 불러올 것이다.
먼저 파이썬 셸을 실행한 후 sys 모듈을 불러온다.
C:\doit>python
>>> import sys
sys 모듈은 파이썬을 설치할 때 함께 설치되는 라이브러리 모듈이다. 이 sys 모듈을 사용하면 파이썬 라이브러리가 설치되어 있는 디렉터리를 확인할 수 있다. sys.path는 파이썬 라이브러리가 설치되어 있는 디렉터리 목록을 보여 준다. 이 디렉터리 안에 저장된 파이썬 모듈은 모듈이 저장된 디렉터리로 이동할 필요 없이 바로 불러 사용할 수 있다.
sys.path에 구글 드라이브 디렉터리를 추가하여 My Drive 디렉터리에 저장된 파이썬 모듈mod3.py을 불러 사용할 수 있게된다. sys.path는 리스트이므로 우리는 다음과 같이 할 수 있다.


맨 위의 이미지는 mod3 모듈이다.
sys.path.append를 사용해서 '/gdrive/My Drive'라는 디렉터리를 sys.path에 추가했다. 그리고 다시 sys.path를 출력해 보니 가장 마지막에 '/gdrive/My Drive'디렉터리가 추가되었다.
실제로 디렉터리 이동 없이 바로 모듈을 불러와서 사용할 수 있게된다.

6️⃣ 패키지의 정의 (Definition of packages)
패키지 구조로 파이썬 프로그램을 만드는 것이 공동 작업이나 유지 보수 등에 유리함
pip 패키지 관리 툴을 이용해 패키지를 관리 가능
파이썬에서 패키지(packages)란 관련 있는 모듈의 집합을 말한다. 패키지는 dot(.)을 사용하여 파이썬 모듈을 계층적(디렉터리 구조)으로 관리할 수 있게 해 준다.
파이썬 패키지는 디렉터리와 파이썬 모듈로 이루어진다.
파이썬에서 모듈은 하나의 .py 파일이다.
game, sound, graphic, play는 디렉터리 이름이다.
패키지 사용의 장점이 있을까? 그렇다. 간단한 파이썬 프로그램이 아니라면 패키지 구조로 파이썬 프로그램을 만드는 것이 공동 작업이나 유지 보수 등에 유리하다. 패키지 구조로 모듈을 만들면 다른 모듈과 이름이 겹치더라도 안전하게 사용이 가능하게 된다.
game/ #루트디렉터리
__init__.py
sound/ #서브디렉터리
__init__.py
echo.py
wav.py
graphic/ #서브디렉터리
__init__.py
screen.py
render.py
play/ #서브디렉터리
__init__.py
run.py
test.py
위는 가상의 game 패키지의 예시이다. game, sound, graphic, play는 디렉터리, 확장자가 .py인 파일은 파이썬 모듈이다. game 디렉터리가 이 패키지의 루트 디렉터리, sound, graphic, play는 서브 디렉터리이다.
7️⃣ 패키지 만들기 (Create new packages)
✅ 패키지 기본 구성 요소 준비하기
1) /content 디렉터리 밑에 game과 기타 서브 디렉터리 및 .py 파일 생성
C:/doit 디렉터리 밑에 game 및 기타 서브 디렉터리를 생성하고 .py 파일들을 다음과 같이 만들어 보자(만약 C:/doit 디렉터리가 없다면 먼저 생성하고 진행하자).
C:/doit/game/__init__.py
C:/doit/game/sound/__init__.py
C:/doit/game/sound/echo.py
C:/doit/game/graphic/__init__.py
C:/doit/game/graphic/render.py
2) 각 디렉터리에 __init__.py 파일을 만들어 놓기만 하고 내용은 일단 비워 둔다. (empty 파일)
3) echo.py 파일의 내용을 생성한다.
# echo.py
def echo_test():
print("echo")
4) render.py 파일을 생성한다.
# render.py
def render_test():
print("render")
5) 다음 예제를 수행하기 전에 우리가 만든 game 패키지를 참조할 수 있도록 명령 프롬프트 창에서 set 명령어로 PYTHONPATH 환경 변수에 C:/doit 디렉터리를 추가한다. 그리고 파이썬 인터프리터를 실행한다.
C:\> set PYTHONPATH=C:/doit
C:\> python
>>>
#sys.path.append("/content") 교수님 예
✅ 패키지 안의 함수 실행하기
이제 패키지를 사용하여 echo.py 파일의 echo_test 함수를 실행해 보자. 패키지 안의 함수를 실행하는 방법에는 3가지가 있다. 다음은 import 예제이므로 하나의 예제를 실행하고 나서 다음 예제를 실행할 때는 반드시 인터프리터를 종료하고 다시 실행해야 한다. 인터프리터를 다시 시작하지 않을 경우, 이전에 import한 것들이 메모리에 남아 있어 엉뚱한 결과가 나올 수 있다.
- each 모듈을 import하여 실행하는 방법(echo 모듈은 echo.py 파일)
>>> import game.sound.echo #import하고 game밑, sound 밑에 echo를 사용하겠다는뜻
>>> game.sound.echo.echo_test()
echo
- echo 모듈이 있는 디렉터리를 from ... import하여 실행하는 방법(위에 방법과 비교했을때 코드가 더 짧다. 앞에서 import한 모듈 때문에 오류가 발생할 수 있으므로 인터프리터를 다시 시작한 후 다음 소스를 입력하자)
>>> exit()
C:\> python
>>> from game.sound import echo
>>> echo.echo_test()
echo
- echo 모듈의 echo_test 함수를 직접 import하여 실행하는 방법(코드가 제일 짧음, 다음 예제도 반드시 파이썬 인터프리터를 재시작하고 진행해야 한다.)
>>> import game
>>> game.sound.echo.echo_test()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'sound'
8️⃣이미 만들어진 패키지 설치하기
(Install existing packages)
파이썬에선 이미 만들어진 패키지를 자동으로 가져와서 쉽게 쓸수있는 pip패키지를 제공한다. pip는 Python 패키지를 설치, 삭제, 관리하기 위해 사용되는 패키지 관리 도구이다. Python 환경에서 필요한 다양한 라이브러리와 패키지를 쉽게 설치하고 관리할 수 있다.
1) 패키지 리스트 확인하기: 설치된 패키지를 확인하려면 다음 명령어를 사용한다. Google Colab에서는 기본적으로 여러 유용한 패키지가 미리 설치되어 있다. Colab의 기본적인 패키지 목록을 확인하려면 !pip list를 통해 확인할 수 있다.
!pip list

로컬 개발 환경에서는 직접 pip 를 설치하여야 한다.
2) 패키지 설치하기: 특정 패키지를 설치하려면 다음 명령어를 사용한다.
# !pip install [설치할 패키지 명]
!pip tensorflow
3) 패키지 삭제하기: 설치된 패키지를 삭제하려면 다음 명령어를 사용한다.
# !pip uninstall [삭제할 패키지 명]
!pip uninstall tensorflow
💡원하는 패키지의 정보를 확인하고 싶다면 PyPI (Python Package Index) 사이트를 방문하면 된다. PyPI는 다양한 Python 패키지의 저장소로, 필요한 패키지를 검색하고 정보와 설치 방법을 확인할 수 있다. 사이트 주소 https://pypi.org

PyPI 사이트에서 원하는 패키지의 이름(예: TensorFlow)을 검색하면 해당 패키지의 설치 방법, 버전, 의존성 정보 등을 확인할 수 있다.
4) 설치된 패키지 버전 확인하기: 특정 패키지의 버전을 확인하려면 다음 명령어를 사용한다.
#!pip show [패키지 명]
!pip show tensorflow

위에서 배운 내용을 바탕으로 복호화/암호화하는 rsa 파일을 설치하여 실행하였다.
import rsa # RSA 키 쌍 생성 (public_key, private_key) = rsa.newkeys(512) # 키 크기는 적절하게 조절 가능 # 공개키로 문자열 암호화 def encrypt_string(message, public_key): encrypted_message = rsa.encrypt(message.encode('utf-8'), public_key) return encrypted_message # 암호화된 문자열을 개인키로 복호화 def decrypt_string(encrypted_message, private_key): decrypted_message = rsa.decrypt(encrypted_message, private_key).decode('utf-8') return decrypted_message # 테스트할 문자열 original_message = "Hello, CUK!" # 문자열 암호화 encrypted_message = encrypt_string(original_message, public_key) print("Encrypted message:", encrypted_message) # 복호화 decrypted_message = decrypt_string(encrypted_message, private_key) print("Decrypted message:", decrypted_message)




