在我新开始学习python,并且要开始上手做项目的时候,有一次碰到了这个错误:'module' object is not callable。错误的原因就是模块导入的时候产生了错误。
下面我举一个例子,在我项目中的一个例子,先看下面的图片:
可以看到,我的项目中有两个package,分别是:DAL和Model。
我在AcrossORM文件中,需要使用到DAL包中的SqlConnection文件和Model包中的Student文件。再看一下不同文件中的代码:
SqlConnection文件中的代码:
Student文件中的代码:
可以看到,我练习的这个项目其实就是连接数据库并且操作数据库的一个小练习
然后,我需要在包外面去使用到这两个文件,那我如果我这样导入的话:
我确实是尝试导入了这两个文件,但是也确实会出现如下的错误:
错误信息告诉我们说:模块中的对象没有被请求道
所以很明确我们可以知道,我们并没有正确地导入相关文件的信息来引入到我们的该文件中。所以要进行相应的修改。
在python中,导入相关模块的方法有两种:import module 和 from module import ,他们的区别就是前者导入相关的文件的时候需要加上模块的限定名称,而后者不用。
比如说在我的项目中我导入Student文件如果使用第一种方法的话,就应该这么写:
import Model
stu = Model.Student()
第二种方法:
from Model.Student import *
stu = Student()
其实修改那个错误的方法已经说出来了,之所以错误,就是在导入模块的时候产生了错误,from之后添加的文件名字就是你需要导入的模块名称,应该对应上一个py文件。而之前对应的只是一个包的名称,所以产生了错误。
而import之后对应的应该就是这个文件中的某个py文件中的某个方法或者类了。所以我们应该做出如下调整:
(我又在Student文件中添加了一个方法test)
最终做出的修改如下:
第一行中,我们导入Model包中的Student文件,并且导入这个文件中test方法和Student类
第二行中,我们导入DAL包中的SqlConnection文件,并且导入这个文件中所有的方法或者类
最后程序就可以正常运行了