티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
Import module from subfolder
서브폴더를 모듈로 가져오는 방법
문제 내용
I want to import subfolders as modules. Therefore every subfolder contains a __init__.py
. My folder structure is like this:
각각의 서브폴더에 init.py가 포함되어있는 모듈로 서브폴더를 가져오고 싶습니다. 폴더 구조는 다음과 같습니다.
src\
main.py
dirFoo\
__init__.py
foofactory.py
dirFoo1\
__init__.py
foo1.py
dirFoo2\
__init__.py
foo2.py
In my main script I import
메인 스크립트에서 다음과 같이 가져옵니다.
from dirFoo.foofactory import FooFactory
In this factory file I include the sub modules:
이 팩토리 파일에 서브 모듈을 포함합니다.
from dirFoo1.foo1 import Foo1
from dirFoo2.foo2 import Foo2
If I call my foofactory I get the error, that python can't import the submodules foo1 and foo2:
foofactory를 호출하면 foo1 및 foo2 하위 모듈을 가져올 수 없다는 오류가 발생합니다.
Traceback (most recent call last):
File "/Users/tmp/src/main.py", line 1, in <module>
from dirFoo.foofactory import FooFactory
File "/Users/tmp/src/dirFoo/foofactory.py", line 1, in <module>
from dirFoo1.foo1 import Foo1
ImportError: No module named dirFoo1.foo1
높은 점수를 받은 Solution
There's no need to mess with your PYTHONPATH
or sys.path
here.
여기서 PYTHONPATH 또는 sys.path를 조작할 필요가 없습니다.
To properly use absolute imports in a package you should include the "root" packagename as well, e.g.:
패키지에서 절대 임포트를 올바르게 사용하려면 "root" 패키지 이름도 포함해야 합니다. 예를 들어:
from dirFoo.dirFoo1.foo1 import Foo1
from dirFoo.dirFoo2.foo2 import Foo2
Or you can use relative imports:
또는 상대 임포트를 사용할 수 있습니다.
from .dirfoo1.foo1 import Foo1
from .dirfoo2.foo2 import Foo2
가장 최근 달린 Solution
Say your project is structured this way:
프로젝트 구조가 다음과 같다면:
+---MyPythonProject
| +---.gitignore
| +---run.py
| | +---subscripts
| | | +---script_one.py
| | | +---script_two.py
Inside run.py
, you can import scripts one and two by:
run.py 내에서 다음과 같이 스크립트 one과 two를 가져올 수 있습니다.
from subscripts import script_one as One
from subscripts import script_two as Two
Now, still inside run.py
, you'll be able to call their methods with:
이제 run.py 내에서 메소드를 호출할 수 있습니다.
One.method_from_one(param)
Two.method_from_two(other_param)
출처 : https://stackoverflow.com/questions/8953844/import-module-from-subfolder
'개발 > 파이썬' 카테고리의 다른 글
`ValueError: cannot reindex from a duplicate axis` 오류 수정하기 (0) | 2023.02.09 |
---|---|
하나의 리스트에서 다른 리스트에 있는 모든 요소 제거하기 (0) | 2023.02.09 |
Python 3에서 generator에 type hint를 적용하기 (0) | 2023.02.08 |
디렉토리 쓰기 가능 여부 확인하기 (0) | 2023.02.07 |
하위 디렉토리를 탐색하지 않고 현재 디렉토리 내 파일들만 검색하기 (0) | 2023.02.07 |