Python 脚本正确执行每条语句,而且 returns ModuleNotFoundError

Python script correctly executes every statement, but also returns ModuleNotFoundError

我是 运行 我在 MacOS 终端中的 Python 脚本。

script1.py源代码:

# A first Python script
import sys              # Load a library module
print(sys.platform)         
print(2 ** 100)             # Raise 2 to a power
x = 'Spam!'
print(x * 8)                # String repetition

Python 交互会话中的输出:

>>> import script1.py
darwin
1267650600228229401496703205376
Spam!Spam!Spam!Spam!Spam!Spam!Spam!Spam!
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'script1.py'; 'script1' is not a package

脚本中的所有语句都正确执行,但解释器returns 出现错误,指出找不到脚本。

这是怎么回事?

你应该删除最后的.py。当您导入 sys 时,您也不要写 import sys.py。另请参阅此 post 回答如何在 python.

中导入您自己的脚本
import script1.py

解释器认为您正在尝试从包 script1.

中导入名为 py 的模块

现在,它可以找到一个名为 script1 的文件 - 那就是你的名为 script1.py 的文件。所以它继续加载它。而 "loading" for python 意味着 运行ning 文件中的语句。所以它就是这样做的。你得到了你的输出。

然后解释器意识到它期望 py 是一个模块,所以 script1 应该是一个包(即其中包含源文件的目录)。但是 script1 只是一个普通文件。因此它会抛出该错误。

尝试导入名为 script1.py 的模块时,您应该使用:

import script1

当尝试 运行 一个名为 script1.py 的文件时,您可以使用:

python script.py