티스토리 뷰
두 줄 요약
- main.py와 패키지는 같은 폴더에 있어야 하나 main.py가 패키지 폴더에 있어서는 안 된다. 즉 아래와 같은 계층 구조가 되도록 배치한다.
- 조금 안다고 깝치지 말고 강좌를 꼼꼼히 읽자.
파이썬에서 패키지를 생성하고 이를 이용하는 방법은 간단하다. 너무도 간단한데 그만 삽질로 시간을 허비했다. 이 포스팅은 나와 같은 바보들에게 바친다. 세상의 바보는 너만 있었던 것이 아니다! 별로 위로는 안 되겠지만 외롭진 않겠지.project/ main.py myPackage/ __init__.py calc.py
패키지의 생성
파이썬에서는 패키지는 일종의 트리 구조를 가진 폴더라고 생각하면 간단하다.
myPackage/
__init__.py
mySubPackage1/ # 하위 패키지 폴더
__init__.py
calc.py # 개별 모듈
area_calc.py # 개별 모듈
MySubPackabe2/
__init__.py
complexCalc.py
위와 갈이 패지키명(myPackage)으로 하나의 폴더를 만들고 그 아래에 하위 폴더를 생성하든지 개별 모듈 파일(calc.py, area_calc.py 등)을 두면 된다. 주의해야 할 점은 최상위 폴더는 물론이고 하위의 폴더에도 __init__.py
파일을 생성해야 한다는 점이다(파일 내용은 비어 있어도 무관하다.) 이 파일이 있어야만 이 폴더를 패키지로 인식한다는 점이다. 1
새 패키지 사용하기와 main.py의 위치
새롭게 만든 이 패키지를 사용하기 위해서는 import만 쓰면 된다.
import 패키지명 또는 모듈명
이렇게 새 패키지를 만들고 main.py에서 import를 해서 쓰려고 하는데 계속해서 패키지를 찾지 못한다는 에러가 발생한다.
Traceback (most recent call last):
File “calcpkg/main.py”, line 5, in
import calcpkg.operation
ModuleNotFoundError: No module named ‘calcpkg’
분명 강좌에서 하라는 대로 폴더를 만들고 모듈 파일도 만들고 주의하라는 __init__.py
파일까지 만들었는데 왠 에러냔 말이다. 짧은 지식으로 아마 파이썬의 환경설정 문제가 아닐까 해서 열심히 구글링을 했지만 구글에서도 관련 질문과 답변을 찾을 수 없었다. 이때 아차 싶었다! 관련해서 외부 패키지 파일의 위치를 지정하는 방법을 알아내긴 했지만 내 경우에는 전혀 도움이 되지 않았다. 2
내 어리석음은 main.py 파일을 패키지 폴더 안에 두었다는 것이다. 그래서 main.py 파일의 위치와 그 아래에서 패키지를 찾기 때문에 해당 에러가 발생한 것이다. main.py를 패키지 폴더 밖으로 빼내는 것으로 에러는 허무하게 해결되고 말았다.
python3.3 이상에서는 __init__.py
가 없어도 패키지로 인식한다. 그러나 하위 버전과의 호환을 위해서는 반드시 넣자. ↩
import sys
sys.path.append(‘외부 패키지 경로’) ↩
'Python' 카테고리의 다른 글
Python3에서 만나는 pyhwp (0) | 2019.11.10 |
---|
- Total
- Today
- Yesterday
- Tistory
- python3
- NK
- books
- django
- 어원
- QComboBox
- 백준
- 북한말
- Mac
- setText()
- QLineEdit
- PyQt5
- C
- words
- QtDesigner
- QLabel
- BOJ
- baekjoon
- 리찬규
- QGridLayout
- 유래
- 리규찬
- judge
- 소수
- MacOS
- locallibrary
- Python
- word
- tips
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |