- [python]패키지(package)에서 from, import 사용법 목차
travel이라는 디렉토리를 만들고 그 밑에 vietnam.py와 thailand.py 함수를 만든다
즉 travel -- __init__.py
thailand.py
vietnam.py
thailand.py에는
class ThailandPackage:
def detail(self):
print("[태국 패키지 3박 5일]")
vietnam.py에는
class VietnamPackage:
def detail(self):
print("[베트남 패키지 3박 5일]")
main.py에서
import travel.thailand <- travel 패키지에서 thailand 모듈을 가져온다
trip_to = travel.thailand.ThailandPackage( )
trip_to.detail()
import travel.thailand.ThailandPackage <- 에러발생
클래스나 함수는 바로 import를 할 수 없다
from travel.thailand import ThailandPackage <- 이렇게 사용하면 클래스나 함수를 직접 가져올 수 있다
trip_to = ThailandPackage( )
trip_to.detail()
from travel import vietnam <- 모듈을 가져온다
trip_to = vietnam.VietnamPackage( ) <- 모듈명.클래스 명으로 trip_to 인스턴스 생성
trip_to.detail()
from travel import *
trip_to = vietnam.VietnamPackage( ) <- vietnam 모듈이 뭔지 모르겠다는 에러 출력
trip_to.detail()
__init__.py 파일을 수정
__all__ = ["vietam", "thailand"] <- 어느 모듈까지 공개할 것인지를 선언한다
이렇게 수정을 하면
from travel import *
trip_to = vietnam.VietnamPackage( )
trip_to.detail()
정상적으로 수행이 된다
모듈이나 패키지를 만들었을 경우 시험(test)는 어떻게 해야 할까 ?
thailand.py에는
class ThailandPackage:
def detail(self):
print("[태국 패키지 3박 5일]")
if __name__ == "__main__": <- 모듈 화일에서 직접 실행하면 이 구문을 탄다
print("이 문장은 모듈을 직접 실행할 때만 실행되요")
else: <- main.py에서 호출되면 아래 문장이 실행된다
print("Thailand 외부에서 모듈 호출")
모듈이나 또는 패키지를 만든 경우에 이런 방법으로 시험을 한다
모듈이나 패키지는 어디에 위치하여야 할까 ?
import 또는 from하는 파일과 같은 위치에 있던가
아니면
python의 lib 폴더에 위치하하면 된다
나 같은 경우에는 c:\python38\lib 폴더에 위치한다
lib 위치를 확인하는 경우에는
import inspect
import random
print(inspect.getfile(random))
명령으로 라이브러리의 파일 위치 확인
참고영상: www.youtube.com/watch?v=kWiCuklohdY&t=4s
'python & 라즈베리파이' 카테고리의 다른 글
'sqlite3.OperationalError'>: near "VALUES": syntax error (0) | 2020.11.03 |
---|---|
[Python]SQLite3 브라우저를 이용하여 DB 내용 확인 (0) | 2020.11.02 |
[Python]모듈(module)에서 from, import, as 사용법 (0) | 2020.11.01 |
[Python]Sqlite3에서 insert 후에 cur.lastrowid 출력 (0) | 2020.10.29 |
[python]파일 또는 디렉토리의 존재 여부 확인(checking the existence of a file or directory) (0) | 2020.10.28 |