在包中运行模块的Python-m开关
问题描述
我正在阅读article。
我想知道为什么这篇文章中的以下陈述是正确的?因为我可以使用解决方案1-也就是-python -m packA.a2
,它工作得很好。
为了给您提供一些上下文,Solution 1说:
使用以test/目录(即中间列)为根的绝对导入 在上表中)。这保证了直接运行start.py
会一直奏效的。若要直接运行a2.py
,请以 已导入模块而不是作为脚本:
- 在控制台中将目录切换到
test/
python -m packA.a2
但在Case 3中作者说:
下面的示例是一个较难处理的问题。假设
sys.path
可以更改(Take 2)a2.py
从不需要直接运行, 但它同时由直接运行的start.py
和a1.py
导入。 在这种情况下,使用上述解决方案1将不起作用。然而, 其他解决方案仍然有效。
但我尝试了一下,并使用python -m packA.a1
解决方案
我要求您创建此问题,但遗憾的是没有答案。我以为您就是创建了一本关于Python导入的权威指南的人,并且能够提供一个详细的示例。
这篇文章的问题是,不清楚他所说的情况是什么意思。我们已经创建了我们认为他在python2和python3中所指的东西,它们都工作得很好
也许有一天Christopher Yeh会看到这个问题并解开谜团,可能会在这个过程中改进他的权威指南。
相关文章