我已经使用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,我试图导入它。我遇到了同样的问题,但那个问题已经解决了。 任何人对错误或如何解决都有任何想法?
答案 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 *