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
我是 运行 我在 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