在包中运行模块的Python-m开关

2022-03-31 00:00:00 python python-import

问题描述

我正在阅读article。

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

为了给您提供一些上下文,Solution 1说:

使用以test/目录(即中间列)为根的绝对导入 在上表中)。这保证了直接运行start.py 会一直奏效的。若要直接运行a2.py,请以 已导入模块而不是作为脚本:

  1. 在控制台中将目录切换到test/
  2. python -m packA.a2

但在Case 3中作者说:

sys.path可以更改(Take 2)

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

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

但我尝试了一下,并使用python -m packA.a1

使其工作

解决方案

我要求您创建此问题,但遗憾的是没有答案。我以为您就是创建了一本关于Python导入的权威指南的人,并且能够提供一个详细的示例。

这篇文章的问题是,不清楚他所说的情况是什么意思。我们已经创建了我们认为他在python2和python3中所指的东西,它们都工作得很好

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

相关文章