티스토리 뷰

Python

패키지 생성과 main.py의 위치

editor752 2019. 11. 10. 16:43

두 줄 요약

  1. main.py와 패키지는 같은 폴더에 있어야 하나 main.py가 패키지 폴더에 있어서는 안 된다. 즉 아래와 같은 계층 구조가 되도록 배치한다.
  2. 조금 안다고 깝치지 말고 강좌를 꼼꼼히 읽자.
    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(‘외부 패키지 경로’) ↩

  1. python3.3 이상에서는 __init__.py가 없어도 패키지로 인식한다. 그러나 하위 버전과의 호환을 위해서는 반드시 넣자. [본문으로]
  2. 아래의 코드와 같이 지정을 하면 된다.

    1
    2
    import sys
    sys.path.append(‘외부 패키지 경로’)
    cs


    [본문으로]


'Python' 카테고리의 다른 글

Python3에서 만나는 pyhwp  (0) 2019.11.10
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
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
글 보관함
11-25 22:18