[PYTHON] Python 3.4 : 전체 경로를 사용하여 모듈을 가져 오는 방법은 무엇입니까?
PYTHONPython 3.4 : 전체 경로를 사용하여 모듈을 가져 오는 방법은 무엇입니까?
전체 경로가 주어지면 어떻게 Python 모듈을 Python 3.4에서로드 할 수 있습니까?
비슷한 질문 전체 경로를 주어진 모듈을 가져 오는 방법? 3.4 이전의 Python 버전에 대해서는 다루지 만 결론은 제시된 답변에 대해서는 Python 3.4의 지원이 더 이상 사용되지 않으므로 Python 3.4에 대한 모든 솔루션에 감사드립니다.
이 질문은 import abitrary python 소스 파일과 중복되지 않습니다. (Python 3.3+), 이것에 대한 답은 importlib.abc.Loader.load_module ()을 떠날 때 고려해야 할 사항과 importlib에있는 문서와 함께 대답과 같이 Python 3.4에서 더 이상 사용되지 않는 loader.load_module ()을 사용하기 때문입니다.
따라서 파이썬 3.4에서 전체 경로로 모듈 가져 오기를 지원하는 솔루션이 필요합니다.
해결법
-
==============================
1.이것은 파일 확장자에 상관없이 모든 파이썬 파일에 적용됩니다.
이것은 파일 확장자에 상관없이 모든 파이썬 파일에 적용됩니다.
import importlib.machinery modulename = importlib.machinery.SourceFileLoader('modulename','/Path/To/module.py').load_module()
이 메소드는 imp.load_module 문서의 deprecation 메시지에서 언급되었습니다.
-
==============================
2.3.6 docs에 따라 지원되거나 사용되지 않는 메소드는 다음과 같습니다.
3.6 docs에 따라 지원되거나 사용되지 않는 메소드는 다음과 같습니다.
def import_file(full_name, path): """Import a python module from a path. 3.4+ only. Does not call sys.modules[full_name] = path """ from importlib import util spec = util.spec_from_file_location(full_name, path) mod = util.module_from_spec(spec) spec.loader.exec_module(mod) return mod
-
==============================
3.이미 주어진 대답은 작동하지만 불필요하게 clunky합니다. 더 쉬운 방법 :
이미 주어진 대답은 작동하지만 불필요하게 clunky합니다. 더 쉬운 방법 :
import sys, os, importlib sys.path.append(os.path.dirname(filename)) mname = os.path.splitext(os.path.basename(filename))[0] imported = importlib.import_module(mname) sys.path.pop()
가져온 모듈은 가져온 모듈입니다. import.method (arg)를 통해 정상적으로 사용할 수 있습니다. 마지막 라인은 꼭 필요한 것은 아니지만 sys.path에 불필요한 항목을 남기지 않는 것이 더 깔끔합니다 (특히 코드를 여러 번 실행하는 경우). 이것은 3.4에서 작동하며 더 이상 사용되지 않는 것으로 표시된 것은 사용하지 않습니다.
-
==============================
4.아래 함수는 Python 3.4에서 작동합니다 - 모듈에서 특정 함수를로드하고 실행하는 데 사용되지만 폴더를 sys 경로에 추가해야합니다.
아래 함수는 Python 3.4에서 작동합니다 - 모듈에서 특정 함수를로드하고 실행하는 데 사용되지만 폴더를 sys 경로에 추가해야합니다.
sys.path.append("path_to_your_file_to_import") tool = {'file':'test_tool.py', 'function':'sum_even_numbers', 'args':['list'], 'return':['int'] } args = [1,2,3] def run(tool, args, silent='Y'): if silent == 'N': print('main called ' + tool['file'] + '->' + tool['function'] + ' with ', args, ' = ', tool['return']) mod = __import__( os.path.basename(tool['file']).split('.')[0]) func = getattr(mod, tool['function']) tool['return'] = func(args) return tool['return']
그것을 통해 전화
run(tool, args)
from https://stackoverflow.com/questions/27381264/python-3-4-how-to-import-a-module-given-the-full-path by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] cc1 : 오류 : Mac에서 python-mysql을 설치하는 동안 인식 할 수없는 명령 줄 옵션 "-Win-null-conversion"10.7.5 (0) | 2018.10.28 |
---|---|
[PYTHON] matplotlib를 사용하여 boxplot에 점 분산을 추가합니다. (0) | 2018.10.28 |
[PYTHON] 인스턴스 메소드 호출을 인터셉트하는 방법은 무엇입니까? (0) | 2018.10.28 |
[PYTHON] Keras : 모델을 저장하고 교육을 계속하는 방법은 무엇입니까? (0) | 2018.10.28 |
[PYTHON] 가로 세로 비율을 유지하면서 크기를 조정하고 세로 및 가로 이미지를 정확히 동일한 크기로 만드시겠습니까? (0) | 2018.10.28 |