导入的模块不能让我使用它包含的功能

时间:2017-02-10 14:46:34

标签: python function import module

我正在使用2010年头版第一本Python,第2章。我已创建了一个名为nester的模块,其中包含函数print_lol,然后制作了另一个程序,应该导入nester,创建一个小列表,然后调用nester中包含的函数print_lol。这不起作用。

import nester

cast = ["Palin", "Cleese", "Idle", "Jones", "Gilliam", "and Chapman."]

nester.print_lol(cast)

这是程序,这是输出:

> Traceback (most recent call last):
   File "<pyshell#2>", line 1, in <module>
   nester.print_lol(cast)
AttributeError: module 'nester' has no attribute 'print_lol'

这有什么不对?为什么会这样?代码与书中完全相同,路径相同,环境路径也可以。怎么了?

这是&#39; nester&#39;代码,它工作正常。

def print_lol(the_list):

for each_item in the_list:
    if isinstance(each_item, list):
        print_lol(each_item)    
    else:
            print(each_item)

此外,nester还在C:\ nester中。它包含setup.py,nester.py以及安装文件夹和文件:MANIFEST,Lib,dist,build。

3 个答案:

答案 0 :(得分:1)

在你的python控制台上试试这个

dir("nester")

它应该显示所有可用的功能。您可能需要确保print_lol在列表中。最有可能的是,它还有一些其他的贡品。所以你调用它的方式应该是nester.some_tribute.print_lol()

答案 1 :(得分:0)

由于import nester没有引发错误,这意味着您的脚本可以导入nester。尝试(显式函数导入)

from nester import print_lol

如果失败,请确保print_lol中存在nester,因为没有拼写错误。

答案 2 :(得分:-1)

我想我找到了答案,这很简单,但我没有注意到,直到在网站上与两位朋友进行更深入的研究。

将'nester'类放在其中的模块称为'nester'。所以当我尝试导入'nester'时,我导入了模块,而不是类。我将问题1中的代码更改为:

from nester import nester

cast = ["Palin", "Cleese", "Idle", "Jones", "Gilliam", "and Chapman."]

nester.print_lol(cast)

所以我从'nester'模块导入'nester'类。 专业提示:永远不要为Module和Class使用相同的名称。

Credits: