如何重新加载在另一个文件中导入的Python模块?

2 投票
1 回答
998 浏览
提问于 2025-04-15 12:40

我正在学习Python是如何重新加载模块的,但遇到了一些困难。

假设我有:

dir1\file1.py:

from dir2.file2 import ClassOne
myObject = ClassOne()

dir1\dir2\file2.py:

class ClassOne():
   def reload_module():
       reload(file2)

当我尝试重新加载时,系统找不到模块“file2”。

我的问题是,怎样才能正确地做到这一点,而不需要把所有东西都放在一个文件里呢?

还有一个相关的问题:当重新加载成功时,myObject会使用新代码吗?

谢谢!

1 个回答

3
   def reload_module():
       import file2
       reload(file2)

不过,这并不会直接改变你从旧版的file2中实例化的对象类型。Python Cookbook第二版里有一个方法可以实现这样的功能,但这个方法的代码和讨论都非常长且复杂,没法在这里详细说明(我相信你可以在谷歌图书搜索中找到它,或者如果找不到的话,原版的“原始”版本[在我们做了所有改进之前],至少应该还在activestate的食谱网站上)。

撰写回答