Python-m开关在包内运行模块



我正在阅读这篇文章。

我想知道为什么文章中的以下陈述是正确的?因为我可以使用解决方案1-也就是-python -m packA.a2,它工作得很好。

为了给你一些背景,解决方案1说:

使用植根于测试/目录的绝对导入(即中间列在上表中(。这保证了直接运行start.py将始终有效。要直接运行a2.py,请将其作为导入的模块而不是脚本:

  1. 在控制台中将目录更改为test/
  2. python -m packA.a2

但在案例3中,作者说:

sys.path可能发生变化(需要2(

下面的例子是一个更难处理的问题。假设a2.py从不需要直接运行,但它是由直接运行的start.pya1.py导入的。

在这种情况下,使用上述解决方案1将不起作用。然而其他解决方案仍然有效。

但我尝试过,并使用python -m packA.a1使其工作

我让您创建这个问题,但遗憾的是没有答案。我认为您创建了python导入的最终指南,并且能够提供一个详细的示例。

这篇文章的问题是不清楚他所说的情况是什么意思。我们已经创造了我们认为他在蟒蛇2和蟒蛇3中的含义,它们在中起作用

也许有一天叶会看到这个问题,解开这个谜团,可能会在这个过程中改进他的权威指南。

最新更新