gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 21:40:38 26 4
gpt4 key购买 nike

我有几个模块,我想在开发 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com