为什么在Python中会出现以下错误;ImportError:没有名为py的模块;?

为什么在Python中会出现以下错误;ImportError:没有名为py的模块;?,python,Python,我是一个Python新手,所以请容忍我:) 我创建了一个名为test.py的文件,其内容如下: test.py import sys print sys.platform print 2 ** 100 然后,我在解释器中运行了import test.py文件,以遵循我书中的一个示例。 当我这样做的时候,我得到了最后带有导入错误的输出 win32 1267650600228229401496703205376 Traceback (most recent call last): File "

我是一个Python新手,所以请容忍我:)

我创建了一个名为test.py的文件,其内容如下:

test.py
import sys
print sys.platform
print 2 ** 100
然后,我在解释器中运行了
import test.py
文件,以遵循我书中的一个示例。 当我这样做的时候,我得到了最后带有导入错误的输出

win32
1267650600228229401496703205376
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named py
win32
1267650600228229401496703205376
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:没有名为py的模块

为什么会出现此错误以及如何修复它?谢谢

导入时不指定扩展名。只要做:

import test
而不是:

import test.py
简单地写下:

import test

这假设test.py与导入它的文件位于同一目录中。

正如其他人所提到的,您不需要将文件扩展名放在import语句中。推荐阅读是最好的

对于错误的更多背景信息,解释器认为您正在尝试从
test
包内部导入名为
py
的模块,因为点表示封装。因为不存在这样的模块(和!),所以会引发该错误


如中所示,在尝试导入
py
模块之前,它仍然会执行
test
模块中的所有语句,这就是为什么会打印出值。

这个奇怪的错误是Python导入模块的结果

Python看到了

import test.py
Python认为(简化了一点):

导入模块测试

  • 在模块搜索路径中搜索test.py
  • 执行test.py(从中获取输出)
  • 将“test”作为名称导入当前命名空间
导入测试.py

  • 搜索文件test/py.py
  • 找到抛出导入错误(未找到名为“py”的模块)

因为python允许点模块名,所以它认为在
test
模块中有一个名为
py
的子模块,并试图找到它。它不知道您正在尝试导入文件。

我认为术语在技术上是“在
test
包中名为
py
的模块”。(但可能是错的!)