[python 기초] module/package, import search (1)
모듈과 패키지, 그리고 파이썬의 import 방법
module(모듈)과 package(패키지)의 정의는 각각 아래와 같다.
- module: 변수,함수,클래스 등을 모아놓은 파이썬 파일 (다른 사람이 만든 모듈 사용 가능)
- package: 여러 module의 집합, 하나의 directory와 같은 역할
module/package가 왜 필요할까 생각해보면,
일단 코드의 양이 방대할테니 정리 및 분류를 할 필요가 있었을 것이다.
(모든 내용을 하나의 파일에 다 넣을 수는 없을 것이고, 반복되는 클래스나 함수 등도 있을테니)
그리고 잘 정리해놓으면, 그때그때 재사용도 쉬워지니 잘 활용하는게 필요하겠다.
#️⃣ import와 namespace
module을 만들어놓고, main 파일에서 module을 사용하려면 import
를 사용해야 한다. mod1.py을 사용하려고 하면, 확장자를 제외하고 작성하면 된다.
import mod1 #mod1.py 불러옴
세부적인 내용(클래스,함수 등)은 그 뒤에 붙이면 된다.
namespace 구조에 따라, 모듈명을 먼저 붙여줘야 파이썬은 해당 함수를 찾을 수 있다.
import mod1.my_func #mod1.py에 있는 my_func함수 불러옴
module을 부를 때, 해당 module 속 일부만 호출할 수도 있다.
from...import
를 사용해서 특정 변수/함수/클래스를 호출하는 것이다.
from mod1 import my_func #mod1.py의 my_func함수 불러옴
from mod1 import * #mod1.py의 모든 내용 불러옴
외부의 module들을 호출하다 보면, 서로 충돌이 일어날 수 있다.
이러한 경우 불러들인 모듈이나 특정 내용에 다시 이름을 붙일 수 있다.
import mod1 as m1
from mod1 import my_func as f1
from mod1 import function_with_name_too_long as f2
#️⃣ package
package는 module의 집합체다.
여러 module에 분산되어 있는 코드도 하나의 package로 불러와 사용할 수 있다.
import pkg.mod1 #pkg에 있는 mod1.py 불러옴
from pkg.mod1 import my_func
그리고, package 안에 __init__.py
이 있고 초기 설정이 되어 있을 경우, import될 때 자동으로 실행된다. 초기 설정이란,
- 해당 디렉토리가 package임을 알려줌
- import할 수 있는 변수/함수/클래스를 제한하는 것
- 그 외 package가 import될 때 먼저 실행해야 하는 코드들 설정
초기 설정을 통해, import 가능한 내용을 제한하고 경로의 길이를 줄일 수 있다.
#__init__.py
from .mod1 import my_func
from .mod2 import my_func_new
__all__ = ['my_func','my_func_new']
위와 같이 __init__.py
에 설정하면, 내가 import할 수 있는 함수는
my_func
와 my_func_new
뿐이다. 다른 내용은 정의되지 않았으므로 import할 수 없다.
그리고 아래 내용을 보면 __init__.py
이 경로 길이를 어떻게 줄이는지 알 수 있다.
#__init__.py
from .mod1 import my_func
#main.py (내가 작성할 main 파일)
from pkg import my_func
#from pkg.mod1 import my_func
module 처럼 다른 사람이 만든 package도 가져올 수 있다. 이 때 pip
라는 명령어를 사용한다.
pip install Django
pip
로 설치한 외부 module은 directory 중 site-package에 저장되며, 이는 다시 sys.path
에 포함된다.
Author And Source
이 문제에 관하여([python 기초] module/package, import search (1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mquat/python-기초-modulepackage-import-search저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)