"import module"与"from"的区别。 "导入模块"用 python 写的?

By simon at 2019-05-16 • 0人收藏 • 17人看过

最近我发现在使用"import m"和"from"时有一些奇怪的错误。 输入 m 」。 我用的是 python3.6。
例如,杜克蒙特树就是下面的。

Test / something ー pacA │ something ー a1.py │ something ー a2.py │ something ー utils.py something ー test a1.py something ー test a2。 Py

在 utils.py 中是 func 打印机:

Def printer (info) : print (info)

在 a1.py 中是:

从。 Util import printer def pa () : printer ('printer called in a1.pa () n') if name'main': printer ('pinter called in a1. 主 n')

在 a2.py 中是:

Printer ('printer called in a2.pa () n') if name'main': printer ('pinter called in a2. 主 n')

我们可以看到,a1.py 和 a2.py 都希望在 utils.py 中导入打印机。 他们使用不同的进口方法。 这是唯一的区别。
当我运行 a1.py 时,不管是不是来自 pacA / 目录,我都会得到下面的错误:

从。 没有命名为"main"的模块。 "main"不是一个包

但是运行 a2.py 会得到正确的答案。

但是,如果我使用另一个。 如果 py 导入 a1和 a2,情况就会好转。 在 test a1.py 中,代码是这样的:

从 pacA import a1 if name'main': a1.pa ()

在 test a2.py 中,代码是这样的:

从 pacA import a2 if name'main': a2.pa ()

当我运行 test a1.py 时,不管是不是 test / ,我都会得到正确的答案。 但是,当我运行 test a2.py 时,会出现以下错误:

从 pacA 导入 a2 File"/ home / gph / desktop / test / pacA / a2.py",第1行,从 utils 导入打印机 ModuleNotFoundError: 没有名为'utils'的模块

如何在 a1中导入 utils.py 来使这两种情况都正确?

登录后方可回帖

Loading...