일부 폴더에서 모든 모듈을 가져 오도록 Python에 알려주는 가장 좋은 (가장 깨끗한) 방법은 무엇입니까?Python : 폴더에서 모든 모듈을 가져 옵니까?
사람들이 "시작"할 때 내 코드가 내 시작시마다 확인하고 거기에있는 모듈을 가져와야하는 내 응용 프로그램의 폴더에 "모듈"(모듈)을 넣을 수있게하려고합니다.
또한
일부 폴더에서 모든 모듈을 가져 오도록 Python에 알려주는 가장 좋은 (가장 깨끗한) 방법은 무엇입니까?Python : 폴더에서 모든 모듈을 가져 옵니까?
사람들이 "시작"할 때 내 코드가 내 시작시마다 확인하고 거기에있는 모듈을 가져와야하는 내 응용 프로그램의 폴더에 "모듈"(모듈)을 넣을 수있게하려고합니다.
또한
을 TS 당신은, 당신은 "os.listdir"또는 "glob.glob"와 폴더 내용 반복하고 __import__
내장 함수와 "평"로 끝나는 각 파일을 가져올 수 있습니다
import os
for name in os.listdir("plugins"):
if name.endswith(".py"):
#strip the extension
module = name[:-3]
# set the module name in the current global name space:
globals()[module] = __import__(os.path.join("plugins", name)
이 접근법의 장점은 : 모듈 이름을 __import__
으로 동적으로 전달할 수 있습니다. --mport 문은 모듈 이름을 하드 코드해야하며, 파일에 대한 다른 것들을 확인할 수 있습니다. 필수 모듈을 가져 오기 전에
이것은 여전히 Python3.6에서 작동하지만 마지막 줄은 다음과 같이 변경됩니다 : 'import importlib; importlib.import_module ("plugins"+ "."+ module)' –
고마워 - 그들은'__import__'에서 파일 이름의 사용을 중단했습니다. 기능은 여전히 효과가 있지만, 단지 "."을 사용해야합니다. 'os.path.join' 대신에 – jsbueno
은 내부
__init__.py
라는 이름의 파일을 만듭니다 ("무언가를"하지 "myfolder.mymodule.something"하지만) 추가 범위가 가져온 물건에 추가하지 않으려는 폴더와 같은 폴더 이름을 가져올하십시오 __init__.py
파일의 사용을 통해, 모듈에 폴더 자체를 변형하고 from <foldername> import *
수이을 사용하는 경우
>>> from <folder_name> import * #Try to avoid importing everything when you can
>>> from <folder_name> import module1,module2,module3 #And so on
더 많은 정보로 내 게시물을 편집했습니다. –
그럼 대답 링크에서 제안 된대로 os.path 목록에 폴더를 추가하고 필요한 것을 가져옵니다. – luke14free
당신은 그 프로젝트를 시도 할 수 있습니다 :이 모듈로 https://gitlab.com/aurelien-lourot/importdir
을, 당신은 단지 당신의 디렉토리에서 모든 플러그인을 가져올 수있는 두 줄을 작성해야하고 추가 __init__.py
(또는 추가 다른 기타 필요하지 않습니다 파일) : [파이썬에서 폴더에있는 모든 모듈을로드]의
import importdir
importdir.do("plugins/", globals())
이 리눅스 경로에서만 작동합니까? – Sajuuk
가능한 중복 (http://stackoverflow.com/questions/1057431/loading-all-modules-in-a-folder-in-python) –
유사한 스레드 및 해당 답변을 확인하십시오. http://stackoverflow.com/questions/279237/python-import-a-module-from-a-folder – vaisakh