Python中的importlib.reload()和exec()

小Py

这将有点复杂,但请耐心等待。

我在重新加载时遇到了麻烦。我正在通过GUI在Python中运行单元测试,我希望能够对测试进行更改而不必重新启动应用程序。

为此,我正在尝试使用importlib.reload。但是,importlib.reload需要一个模块作为参数,我只能以字符串形式访问导入的模块名称。为了绕过这个问题,我尝试使用exec(),如下所示:

def loadSuite(testModules):

  # Initialize the test suite
  suite = unittest.TestSuite()

  alreadyImported = sorted(sys.modules.keys())
  # For the unit tests for each control module found in testModules
  for t in testModules:
    if t in alreadyImported:
      exec("importlib.reload " + "(" + t + ")")
    suite.addTests(unittest.defaultTestLoader.loadTestsFromName(t))
  return suite

测试按应用程序划分在子目录中,如下所示:根程序目录\ Application1 \ Test1

如果重新加载的文件位于主文件夹中,我的方法似乎可以正常工作。问题出在这里:importlib.reload()有时在子目录上有问题。如果我尝试使用

t = "Application1.Test1"
exec("importlib.reload " + "(" + t + ")")

我懂了

NameError:名称“ Application1”未定义

这可能是因为它试图将Application1视为模块,并将Test1视为模块的一部分。然而!如果我直接在终端中运行相同的代码,它将起作用。

我什至从哪里开始尝试解决此问题?

丹尼尔·罗斯曼

您正在将每个名称与sys.modules中的键进行比较。但是该词典中是模块本身,您应该可以将其传递给reload()。

if t in alreadyImported:
    importlib.reload(sys.modules[t])

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

importlib.reload不替换模块__dict__中的对象

来自分类Dev

使用python importlib导致自动完成和皮棉丢失

来自分类Dev

Python eval()和exec()

来自分类Dev

exec和php中的区别

来自分类Dev

如何在Python安装脚本中要求importlib.resources

来自分类Dev

Fash中的Flock和exec安全吗?

来自分类Dev

在exec中创建存储过程和错误

来自分类Dev

angularjs中的$ window.location.reload()和$ route.reload()之间的区别

来自分类Dev

如何在Atom-Shell中运行reload()和open()

来自分类Dev

python importlib从错误的目录导入

来自分类Dev

PHP中的exec(),shell_exec,system()和passthru()函数有什么区别?

来自分类Dev

python exec在2.7和3.3之间表现不同

来自分类Dev

了解C ++中的fork,exec和wait(Linux)

来自分类Dev

使用fork和exec在C linux中执行程序

来自分类Dev

exec系列电话中p和e代表什么?

来自分类Dev

如何在查找中结合使用“ -size”和“ -exec rm”?

来自分类Dev

在find -exec中管道和重定向输出的正确位置?

来自分类Dev

在Python中公开C ++类(只能加载ET_DYN和ET_EXEC)

来自分类Dev

从命令行和python API在docker exec中执行管道

来自分类Dev

在Python 2.7中,importlib可以一次导入多个模块吗?

来自分类Dev

在Python 2.7中,importlib可以一次导入多个模块吗?

来自分类Dev

在GHCi中以单个命令:reload和run:main的正确方法是什么?

来自分类Dev

如果我在 parent 和 child 中 fork 和 exec 会发生什么?

来自分类Dev

使用Python的exec()函数和格式化的字符串?

来自分类Dev

使用Python的exec()函数和格式化的字符串?

来自分类Dev

在find -exec中同时使用基本名和完整路径

来自分类Dev

从Java打开cmd并等待cmd和exec命令中的用户输入

来自分类Dev

redis-py中MULTI和EXEC命令的等效功能是什么?

来自分类Dev

如何通过在Java中的Runtime.exec()传递用户和pwd

Related 相关文章

  1. 1

    importlib.reload不替换模块__dict__中的对象

  2. 2

    使用python importlib导致自动完成和皮棉丢失

  3. 3

    Python eval()和exec()

  4. 4

    exec和php中的区别

  5. 5

    如何在Python安装脚本中要求importlib.resources

  6. 6

    Fash中的Flock和exec安全吗?

  7. 7

    在exec中创建存储过程和错误

  8. 8

    angularjs中的$ window.location.reload()和$ route.reload()之间的区别

  9. 9

    如何在Atom-Shell中运行reload()和open()

  10. 10

    python importlib从错误的目录导入

  11. 11

    PHP中的exec(),shell_exec,system()和passthru()函数有什么区别?

  12. 12

    python exec在2.7和3.3之间表现不同

  13. 13

    了解C ++中的fork,exec和wait(Linux)

  14. 14

    使用fork和exec在C linux中执行程序

  15. 15

    exec系列电话中p和e代表什么?

  16. 16

    如何在查找中结合使用“ -size”和“ -exec rm”?

  17. 17

    在find -exec中管道和重定向输出的正确位置?

  18. 18

    在Python中公开C ++类(只能加载ET_DYN和ET_EXEC)

  19. 19

    从命令行和python API在docker exec中执行管道

  20. 20

    在Python 2.7中,importlib可以一次导入多个模块吗?

  21. 21

    在Python 2.7中,importlib可以一次导入多个模块吗?

  22. 22

    在GHCi中以单个命令:reload和run:main的正确方法是什么?

  23. 23

    如果我在 parent 和 child 中 fork 和 exec 会发生什么?

  24. 24

    使用Python的exec()函数和格式化的字符串?

  25. 25

    使用Python的exec()函数和格式化的字符串?

  26. 26

    在find -exec中同时使用基本名和完整路径

  27. 27

    从Java打开cmd并等待cmd和exec命令中的用户输入

  28. 28

    redis-py中MULTI和EXEC命令的等效功能是什么?

  29. 29

    如何通过在Java中的Runtime.exec()传递用户和pwd

热门标签

归档