为什么我在Python中遇到以下错误“ImportError:没有名为py的模块”?

时间:2009-01-28 21:37:27

标签: 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 "<stdin>", line 1, in <module>
ImportError: No module named py

为什么我会收到此错误,如何解决?谢谢!

4 个答案:

答案 0 :(得分:39)

而不是:

import test.py

简单地写:

import test

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

答案 1 :(得分:6)

这个看起来很奇怪的错误是Python导入模块的结果。

Python看到

import test.py

Python认为(简化了一下):

  

导入模块测试。

     
      
  • 在模块搜索路径中搜索test.py
  •   
  • 执行test.py(获取输出的地方)
  •   
  • 将'test'作为名称导入当前名称空间
  •   
     

import test.py

     
      
  • 搜索文件test / py.py
  •   
  • 抛出ImportError(没有名为'py'的模块)。
  •   

因为python允许使用虚线模块名称,所以它只是认为你在py模块中有一个名为test的子模块,并试图找到它。它不知道你是在尝试导入文件。

答案 2 :(得分:5)

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

import test

答案 3 :(得分:2)

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

对于错误的更多背景,解释器认为您正在尝试从py包中导入名为test的模块,因为点表示封装。因为不存在这样的模块(和test isn't even a package!),所以它会引发错误。

more in-depth documentation on the import statement所示,在尝试导入test模块之前,它仍会执行py模块中的所有语句,这就是您打印出值的原因。