当前位置: 首页 > 面试题库 >

交互时在python中重新导入模块

郑晗日
2023-03-14
问题内容

我知道可以做到,但是我不记得怎么做。

如何在python中重新导入模块?场景如下:我以交互方式导入模块并对其进行修改,但随后遇到错误。我修复了.py文件中的错误,然后想重新导入固定模块而不退出python。我该怎么做


问题答案:

这应该工作:

reload(my.module)

来自Python文档

重新加载先前导入的模块。该参数必须是模块对象,因此它必须已经成功导入。如果您已使用外部编辑器编辑了模块源文件,并且想在不离开Python解释器的情况下尝试新版本,则这将非常有用。

如果运行Python 3.4及更高版本,请执行import importlib,然后执行importlib.reload(nameOfModule)

不要忘记使用此方法的注意事项:

  • 重新加载模块时,将保留其字典(包含模块的全局变量)。名称的重新定义将覆盖旧的定义,因此这通常不成问题,但是,如果模块的新版本未定义旧版本所定义的名称,则不会删除旧定义。

  • 如果一个模块使用导入了另一个模块的对象from ... import ...,则调用reload()另一个模块的操作并未重新定义从该模块导入的对象-解决该问题的一种方法是重新执行该from语句,另一种方法是使用import和限定名称(module.*name*)。

  • 如果模块实例化一个类的实例,则重新加载定义该类的模块不会影响实例的方法定义-它们将继续使用旧的类定义。派生类也是如此。



 类似资料:
  • 问题内容: 我正在尝试使用该软件包在R中导入python模块。该模块可以在这里找到。我克隆了存储库并运行成功。如果打开python shell,则可以导入。但是,当我尝试将其导入RStudio时,出现以下错误: 我在macOS Sierra版本10.12.6上并通过Anaconda安装了python 3.6。我也尝试过给出python的路径为: 当我从终端运行python时,我得到: 不确定pyt

  • 问题内容: 我有一个 在IPython中,我使用: 然后,我将其更改为: 在IPython中,调用的结果仍然是: 然后我用: 我删除了同一个文件夹中存在的文件夹,但仍然没有运气。 我可以在运行时重新导入更新的代码吗? 问题答案: 对于Python 2.x 对于Python 3.x

  • 问题内容: 如何设置模块导入,以便每个模块都可以访问其他所有模块的对象? 我有一个中等大小的Python应用程序,在各个子目录中都有模块文件。我使用创建了将这些子目录附加到模块并导入一组模块的模块。使用该限定条件引用模块对象。然后,我使用将该模块导入其他模块。现在的代码草率,其中有几处通常是重复的。 首先,应用程序失败,因为未分配某些模块引用。单元测试时,会运行相同的代码。 其次,我担心递归模块导

  • 所以我今天遇到了一个奇怪的问题。我在IntelliJ中的一个模块有一些问题,所以我决定我应该试着把它关闭,然后从一个新的结账中重建它。我从Project窗口中删除了该模块,然后从我的文件系统中删除/重新下载了该模块。 我回到Intellij并尝试导入模块。它让我完成了选择选项的正常步骤,然后似乎成功了。只是它没有重新出现在我的项目窗口中。 我不确定我做了什么,但重新创建整个项目在这一点上不是一个选

  • 问题内容: 我一直在阅读有关文件的功能。据说我们在包含模块的文件夹中需要一个空文件,以便可以导入这些模块。但是,我尝试将文件夹路径添加到PYTHONPATH(Windows 7中为环境变量)。尽管此文件夹不包含文件,但我仍然可以从该文件夹导入模块。您能否解释一下在不存在的情况下如何导入这些模块? 谢谢, 最好的祝福 问题答案: 把一个文件夹变成一个包。这对于创建某种模块层次结构很有用,您可以在其中

  • 问题内容: 我试图了解关于Python(v2.7)导入机制的最佳实践。我有一个项目开始有所增长,可以说我的代码如下组织: 包名称为,在其下方,我有一个模块,其中包含该类的代码。因此,我对包,模块和类使用了相同的名称,但起初可能不太聪明。 为空,需要导入类,因此文件的一部分如下所示: 但是我后来又重新考虑了这一点,并且我认为最好在文件中包含所有导入内容。因此,我现在看起来像: 而我只需要导入: 虽然