1

我在 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

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

这里发生了什么?

4

2 回答 2

3
import script1.py

解释器认为您正在尝试py从 package中导入命名的模块script1

现在,它可以找到一个名为script1- 即你的文件名为script1.py. 所以它继续加载它。python的“加载”意味着运行文件中的语句。所以它做到了。你得到你的输出。

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

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

import script1

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

python script.py
于 2020-04-09T23:03:45.463 回答
1

您应该在最后删除 .py。当您导入 sys 时,您也不写import sys.py. 另请参阅这篇回答如何在 python 中导入您自己的脚本的帖子。

于 2020-04-09T22:57:38.970 回答