[PYTHON] 파이썬 : dir의 모든 모듈에서 가져 오는 방법은 무엇입니까?
PYTHON파이썬 : dir의 모든 모듈에서 가져 오는 방법은 무엇입니까?
당신은 구조합니다 :
main.py
my_modules/
module1.py
module2.py
module1.py:
class fooBar():
....
class pew_pew_FooBarr()
....
...
모듈 *의 모든 클래스를 프리픽스없이 main에 추가하려면 어떻게해야합니까? 즉, foo = my_modules.module1.fooBar ()가 아닌 foo = fooBar ()를 사용하는 것입니다.
확실한 결정은 다음과 같이 main.py를 작성하는 것입니다.
from my_modules.module1 import *
from my_modules.module2 import *
from my_modules.module3 import *
...
하지만 새로운 moduleN을 만들 때 main.py를 변경하고 싶지는 않습니다. 거기에 대한 해결책이 있습니까?
나는 이런 식으로 수업을 들여 오는 것이 좋은 생각이 아니라는 것을 알고 있습니다. 그러나 저는 여전히 그것에 대해 궁금합니다.
UPD :이 질문은이 문제와 다릅니다. 내 문제는 네임 스페이스없이 모듈을로드하는 것이므로 파이썬에서 폴더의 모든 모듈을로드하는 것입니다.
해결법
-
==============================
1.my_modules 폴더에서 적절한 패키지로 만들려면 __init__.py 파일을 추가하십시오. 이 파일에서 각 모듈의 전역을 __init__.py 파일의 전역 범위에 삽입하면 모듈을 가져올 때 사용할 수 있습니다 (전역 이름을 __all__ 변수에 추가 한 후에도 가능합니다) ) :
my_modules 폴더에서 적절한 패키지로 만들려면 __init__.py 파일을 추가하십시오. 이 파일에서 각 모듈의 전역을 __init__.py 파일의 전역 범위에 삽입하면 모듈을 가져올 때 사용할 수 있습니다 (전역 이름을 __all__ 변수에 추가 한 후에도 가능합니다) ) :
__all__ = [] import pkgutil import inspect for loader, name, is_pkg in pkgutil.walk_packages(__path__): module = loader.find_module(name).load_module(name) for name, value in inspect.getmembers(module): if name.startswith('__'): continue globals()[name] = value __all__.append(name)
자, 대신 :
from my_modules.class1 import Stuff
할 수있는 일은 다음과 같습니다.
from my_modules import Stuff
또는 모든 것을 글로벌 범위로 가져 오려면 다음과 같이하십시오.
from my_modules import *
이 방법은 클래스가 서로 덮어 쓰는 문제가있어서 두 모듈이 Foo를 제공하면 마지막으로 가져온 모듈 만 사용할 수 있습니다.
from https://stackoverflow.com/questions/16852811/python-how-to-import-from-all-modules-in-dir by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 관리 사이트 : TemplateDoesNotExist at / admin / (0) | 2018.11.24 |
---|---|
[PYTHON] Numpy 배열에 대한 인덱스로 튜플 / 배열 / 목록 풀기 (0) | 2018.11.24 |
[PYTHON] AttributeError : 'str'객체에 'append'속성이 없습니다. (0) | 2018.11.24 |
[PYTHON] 큰 텍스트 파일에서 두 개의 고유 한 단어 사이에서 정보를 추출하는 방법 (0) | 2018.11.24 |
[PYTHON] 어떻게 장고에서 파이썬을 사용하여 응용 프로그램 이름을 얻는 지 (0) | 2018.11.24 |