我有几个模块,我想在开发 Sublime Text 包时重新加载而不必重新启动 Sublime Text。
我正在运行 Sublime Text build 3142,它随 python3.3
一起连续运行它的包/插件。但是,在开发插件时,我将添加到路径中的第三方模块导入为:
import os
import sys
def assert_path(module):
"""
Import a module from a relative path
https://stackoverflow.com/questions/279237/import-a-module-from-a-relative-path
"""
if module not in sys.path:
sys.path.insert( 0, module )
current_directory = os.path.dirname( os.path.realpath( __file__ ) )
assert_path( os.path.join( current_directory, 'six' ) ) # https://github.com/benjaminp/six
import six
但是当我编辑模块 six
的源代码时,我需要关闭并再次打开 Sublime Text,否则 Sublime Text 不会获取对 six
python 的更改模块。
到目前为止我尝试过的一些代码:
print( sys.modules )
import git_wrapper
imp.reload( find_forks )
imp.reload( git_wrapper )
imp.reload( sys )
最佳答案
要列出所有导入的模块,您可以使用 sys.modules.values()
。
import sys
sys.modules.values()
sys.modules
是一个字典,将模块的字符串名称映射到它们的引用。
要重新加载模块,您可以遍历上面返回的列表,并对每个模块调用 importlib.reload
:
import importlib
for module in sys.modules.values():
importlib.reload(module)
关于python - 如何重新加载所有导入的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45405600/