후 모듈을 다시로드 :실행하여 나는 모듈을 다시로드 할 수 있다는 사실을 알고 변화
reload(module_name)
내가 전체 모듈 만의 한 기능을 가져 오지 않는다는 것을 가정한다.
from module_name import one_function
변경 한 특정 기능을 어떻게 다시로드 할 수 있습니까?
미리 감사드립니다.
후 모듈을 다시로드 :실행하여 나는 모듈을 다시로드 할 수 있다는 사실을 알고 변화
reload(module_name)
내가 전체 모듈 만의 한 기능을 가져 오지 않는다는 것을 가정한다.
from module_name import one_function
변경 한 특정 기능을 어떻게 다시로드 할 수 있습니까?
미리 감사드립니다.
리 바인드하기 위해 하나의 이름을 다시 가져와야합니다. 당신은 sys.modules
에 캐시 모듈 오브젝트에 도달 할 수 있습니다 :
reload(sys.modules['module_name'])
from module_name import one_function
당신은 기능을 소유하고있는 모듈 얻을 inspect.getmodule
를 사용할 수 있습니다
import inspect
from math import sqrt
from importlib import reload
math = reload(inspect.getmodule(sqrt))
sqrt = math.sqrt
는이 프로세스를 자동화 할 수 있습니다 __qualname__
사용을 :
def reload_attr(attribute):
obj = reload(inspect.getmodule(attribute))
for name in attribute.__qualname__.split("."):
try:
obj = getattr(obj, name)
except NameError:
raise ValueError("Unable to find attribute.")
return obj
reload_attr(sqrt)
#>>> <built-in function sqrt>
작동하는 것은 아닙니다. 모든 속성이 찾기가 쉽지는 않습니다.
전체 모듈을 다시로드하지 않는 이유는 무엇입니까? 왜 하나의 함수 만 다시로드하고 싶습니까? – Nilesh
그건 그렇고,'from module_name import one_function'을 사용하면'import module_name'처럼 ** 전체 모듈 **이로드됩니다. 유일한 차이점은 전역 이름 공간에 어떤 이름이 추가되는지입니다. – unutbu
라파다, 이것은 NameError를 발생시킵니다. 모듈을 명시 적으로 가져 오지 않았습니다 (즉, 가져 오기). –
bergercookie