python - 如何重新加载所有导入的模块?

标签 python python-3.x module python-import

我有几个模块,我想在开发 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 )
  1. Proper way to reload a python module from the console
  2. Reloading module giving NameError: name 'reload' is not defined

最佳答案

要列出所有导入的模块,您可以使用 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/

相关文章:

python - 如何使用三个使用公共(public)模块的应用程序构建一个 python 项目

python - 7 位直到 0xEF

python - 有没有办法填充到偶数位?

python - 你如何反转/大写字符串中的单词

python - 为什么 TimedRotatingFileHandler 不删除旧文件?

Python Pandas : Rolling backward function

python - 你如何组织 Python 模块?

python - Python 中的调用图分析器

python - 我怎样才能从我的帮助命令中隐藏一个齿轮?

javascript - 在模块的配置中使用 clientScripts