Python -m 切换运行包内的模块

Posted

技术标签:

【中文标题】Python -m 切换运行包内的模块【英文标题】:Python -m switch to run module inside package 【发布时间】:2020-02-22 22:37:00 【问题描述】:

我正在阅读这个article。

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

为了给你一些背景信息,Solution 1 说:

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

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

但是在Case 3作者说:

sys.path 可能会改变(需要 2 个)

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

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

但我尝试了这个并使用 python -m packA.a1 让它工作

【问题讨论】:

【参考方案1】:

我要求您创建这个问题,但很遗憾没有答案。我认为您是创建 Python 导入权威指南的人,并且能够提供详细的示例。

这篇文章的问题在于,不清楚他所说的情况是什么意思。我们已经创建了我们认为他在 python2 和 python3 中的含义,并且它们有效

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

【讨论】:

以上是关于Python -m 切换运行包内的模块的主要内容,如果未能解决你的问题,请参考以下文章

Python知识点记录二(包和模块)

Python包内怎么在各个模块内调用全局变量

详解Python中的相对导入和绝对导入

Python Kivy 在 Popup 内的按钮之间切换

springboot项目以jar包运行时,读取jar包内的静态文件

springboot项目以jar包运行时,读取jar包内的静态文件