python中导入一个模块使用_python 中如何导入一个自己创建的模块

1 classA(object):2 def __init__(self,name,age):3 print "A's initing"

4 self.name=name5 self.age=age6 defm_A(self):7 print "m_A:name is %s" %self.name8 print "m_A:age is %d" %self.age9

10 classB(object):11 def __init__(self,name,age):12 print "B's initing"

13 self.name=name14 self.age=age15 defm_B(self):16 print "m_B:name is %s" %self.name17 print "m_B:age is %d" %self.age

现在我们来测试一下导入:

1 importtestIm2 a=testIm.A("anna",18) #输出结果为:A's initing

3 b=testIm.B("jim",21) #输出结果为:B's initing

4 a.m_A() #输出结果为:m_A:name is anna

5 #m_A:age is 18

6 b.m_B() #输出结果为:m_B:name is jim

7 #m_B:age is 21

发现没有报错了。

方法2、将prefix\lib\sit-packages\testImLib加入系统的搜索路径方法如下:

1 importsys

2 sys.path.append('C:\\Python27\\lib\\site-packages\\testImLib')

3 import testImNew

此时也没有报错了。

我们创建单个文件的情况并不能满足我们大部分时候的要求,更多的时候我们需要创建一个子目录,在子目录中组织我们的多个模块。如果我们导入自己创建的目录中的模块,我们就需要另一个文件的的帮忙才能正常导入我们的模块,这个文件及是__init__.py,或者也可以像前面那样,将我们创建的模块所在的路径加入到搜索路径中。如果只是单单在site-packages目录下创建了我们自己的目录,然后导入就会像前面一样报错。

对于添加目录到搜索路径,上面已经写出了方法,下面我说一下使用__init__.py进行导入。

假如在 prefix\lib\sit-packages目录下存在子目录testImLib,子目录包含testIm.py模块,即 有文件prefix\lib\sit-packages\testImLib\testIm.py

我们如果直接导入报错:

import testImLib.testIm #输出结果为: ImportError: No module named testImLib.testIm

在子目录testImLib中引入__init__.py文件。__init__.py文件引入后testImLib就相当于是一个合法的包了。

prefix\lib\sit-packages\testImLib\中包含:__init__.py、testIm.py2个文件。__init__.py文件可以为空,也可以写入我们要的内容。

添加__init__.py文件后我们测试一下:

if __name__=="__main__":from testImLib importtestIm

a=testIm.A("anna",18) #输出结果为:A's initing

到此,顺利解决。

总结一下:

当我们创建了一个模块需要导入时,当此模块文件在系统的搜索路径下,可以直接导入;如果不在,则可以通过她添加模块所在路径到系统的搜索路径中去。

当我们创建了一个包时,一定需要__init__.py文件,这样才是一个合法的包。我们可以直接通过 from *** import ***来导入。或者我们也可以不要__init__.py文件直接将包的路径添加到搜索路径中。

基于目前的水平,可能文章中有错误或者不够清晰的地方,以后再完善。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值