可能是重复的 - TypeError:' module'对象不可调用

时间:2015-08-17 23:52:07

标签: python module typeerror

我已经使用Python大约一年了,我开始编写自己的模块。我试图制作一个可以同时导入大量有用模块的模块。该模块导入正常。当我尝试运行它时,它会给出错误

Traceback (most recent call last):
    File "<pyshell#1>", line 1, in <module>
        importuseful()
TypeError: 'module' object not callable

我的文件名是importuseful.py 我的代码是:

def importuseful():

    import sys

    import os

    import RPi.GPIO as GPIO

    import GPIO as gpio

    import random

    import math

    import time

    import email

    import tty

    import turtle

我在IDLE shell上运行:

  
    
      来自Modules的

导入importuseful

             

importuseful()

    
  

这是它抛出TypeError

的地方

它所在的路径是/ home / pi / Modules,并且它被设置为$ PYTHONPATH的一部分。

我做的唯一其他模块是GPIO,我试图导入它。我遇到了同样的问题,但那个问题已经解决了。     任何人对错误或如何解决都有任何想法?

2 个答案:

答案 0 :(得分:0)

您需要使用模块名称访问该函数,您已导入模块,因此 importuseful.importuseful() 试图调用模块而不是模块中定义的函数:

 from importuseful import importuseful
 importuseful()

或者如果您想从模块导入该功能,您可以使用:

 from Modules.importuseful import importuseful 

或使用您的模块:

import sys
import os
import RPi.GPIO as GPIO
import GPIO as gpio
import random
import math
import time
import email
import tty
import turtle

如果您尝试使用脚本实际导入所有模块。忘记这个功能,只做进口。

importuseful.math

然后,如果你想能够使用所有模块,只需使用from Modules.importuseful import *等......你可以使用from Modules.importuseful import importuseful as im,但这绝不是一个好主意,你可以这样做缩短名称im.math(.. abstract等。

答案 1 :(得分:0)

作为Padraic Cunningham said,您需要调用模块内的函数。

from Modules import importuseful

importuseful.importuseful()

但是,这不会做你想要的,因为模块只会在功能范围内导入。例如:

>>> def importuseful():
...     import math
... 
>>> importuseful()
>>> math
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'math' is not defined
>>> 

您应该只在每个文件的顶部包含您需要的模块。无需导入不必要的模块。

如果确实想要这样做(我不推荐),您可以将导入直接放入模块,然后从该模块导入所有内容。

# usefulimports.py

import functools
import itertools
import math

# script.py

from usefulimports import *