Python:无法在自己的模块中找到任何函数?

9 投票
1 回答
13097 浏览
提问于 2025-04-18 04:27

我创建了一个自己的模块,文件名是 mymodule.py。这个文件里面包含了:

def testmod():
       print "test module success"

我把这个文件放在了 /Library/Python/2.7/site-packages/mymodule/mymodule.py 这个位置。

我还添加了一个 __init__.py 文件,这些文件经过编译后生成了:

__init__.pycmymodule.pyc

然后在 Python 控制台中,我用下面的命令导入它:

import mymodule

这个操作没有问题。

但是当我尝试使用 mymodule.testmod() 时,出现了以下错误:

AttributeError: 'module' object has no attribute 'testmod'

所以看起来这个模块里好像没有这个函数?

1 个回答

16

你有一个叫做 package 的东西,名字是 mymodule,里面包含了一个 module,同样叫 mymodule。这个函数是模块的一部分,而不是包的一部分。

首先,你需要导入这个模块:

import mymodule.mymodule

然后你可以在这个模块上调用这个函数:

mymodule.mymodule.testmod()

你可以使用 from ... importimport ... as 来精确控制导入的内容:

from mymodule import mymodule

mymodule.testmod()

或者

from mymodule import mymodule as nestedmodule

nestedmodule.testmod

或者

from mymodule.mymodule import testmod

testmod()

等等。

撰写回答