码迷,mamicode.com
首页 > 编程语言 > 详细

python不同目录间模块调用

时间:2019-10-09 12:36:52      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:包含   named   lib   div   调用   pre   style   package   代码   

前置:

sys.path是python的搜索模块的路径集。

 

以下是目录结构:

技术图片

 

1、首先同一目录下的模块间调用:b目录下Math_3.py调用Math_4.py

 1 import sys
 2 print(the path of Math_3 is {}.format(sys.path))
 3 from Math_4 import Math_4
 4 class Math_3:
 5 
 6     def __init__(self, a, b):
 7         self.a = a
 8         self.b = b
 9         
10     def mul(self):
11         return self.a * self.b
12     
13     m4 = Math_4(6, 2)
14     print(the value of m4 is {}.format(m4.div()))
15         
16 if __name__ == __main__:
17     m3 = Math_3(3, 2)
18     print(the value of m3 is {}.format(m3.mul()))
19 
20 #运行结果
21 the path of Math_3 is [D:\\PyEx\\math\\b, C:\\Python36\\python36.zip, C:\\Python36\\DLLs, C:\\Python36\\lib, C:\\Python36, C:\\Python36\\lib\\site-packages]
22 the value of m4 is 3.0
23 the value of m3 is 6

 

2、基于第1步同级别目录下的模块调用:b目录下Math_3.py调用a目录下的Math_2.py

 1 import sys
 2 #表示导入当前文件的上层目录到搜索路径中
 3 sys.path.append(..)
 4 print(the path of Math_3 is {}.format(sys.path))
 5 from a.Math_2 import Math_2
 6 from Math_4 import Math_4
 7 class Math_3:
 8 
 9     def __init__(self, a, b):
10         self.a = a
11         self.b = b
12         
13     def mul(self):
14         return self.a * self.b
15         
16     m2 = Math_2(3, 1)
17     print(the value of m2 is {}.format(m2.sub()))
18     
19     m4 = Math_4(6, 2)
20     print(the value of m4 is {}.format(m4.div()))
21         
22 if __name__ == __main__:
23     m3 = Math_3(3, 2)
24     print(the value of m3 is {}.format(m3.mul()))
25 
26 #运行结果
27 the path of Math_3 is [D:\\PyEx\\math\\b, C:\\Python36\\python36.zip, C:\\Python36\\DLLs, C:\\Python36\\lib, C:\\Python36, C:\\Python36\\lib\\site-packages, ..]
28 the value of m2 is 2
29 the value of m4 is 3.0
30 the value of m3 is 6

 

3、基于第2步,最外层目录math下的test_math.py调用b目录下的Math_3.py

 1 import sys
 2 print(the path of test_math is {}.format(sys.path))
 3 from b.Math_3 import Math_3
 4 m1 = Math_1(1, 2)
 5 m3 = Math_3(4, 5)
 6 print(the value of m3 is {}.format(m3.mul()))
 7 
 8 #运行结果:
 9 the path of test_math is [D:\\PyEx\\math, C:\\Python36\\python36.zip, C:\\Python36\\DLLs, C:\\Python36\\lib, C:\\Python36, C:\\Python36\\lib\\site-packages]
10 the path of Math_3 is [D:\\PyEx\\math, C:\\Python36\\python36.zip, C:\\Python36\\DLLs, C:\\Python36\\lib, C:\\Python36, C:\\Python36\\lib\\site-packages, ..]
11 Traceback (most recent call last):
12   File "test_math.py", line 4, in <module>
13     from b.Math_3 import Math_3
14   File "D:\PyEx\math\b\Math_3.py", line 5, in <module>
15     from Math_4 import Math_4
16 ModuleNotFoundError: No module named Math_4

运行结果报错,根据14、15行信息,原因是在Math_3.py中导入的同一目录下的Math_4.py出错了,通过分析运行结果中打印出来的sys.path,是由于程序搜索模块的路径集中不包含D:\\PyEx\\math\\b,所以修改Math_3.py的代码如下:

 1 import sys
 2 sys.path.append(..)
 3 print(the path of Math_3 is {}.format(sys.path))
 4 from a.Math_2 import Math_2
 5 #修改后
 6 from b.Math_4 import Math_4
 7 class Math_3:
 8 
 9     def __init__(self, a, b):
10         self.a = a
11         self.b = b
12         
13     def mul(self):
14         return self.a * self.b
15         
16     m2 = Math_2(3, 1)
17     print(the value of m2 is {}.format(m2.sub()))
18     
19     m4 = Math_4(6, 2)
20     print(the value of m4 is {}.format(m4.div()))
21         
22 if __name__ == __main__:
23     m3 = Math_3(3, 2)
24     print(the value of m3 is {}.format(m3.mul()))

 

4、基于以上修改再次运行test_math.py文件,其结果如下

the path of test_math is [D:\\PyEx\\math, C:\\Python36\\python36.zip, C:\\Python36\\DLLs, C:\\Python36\\lib, C:\\Python36, C:\\Python36\\lib\\site-packages]
the path of Math_3 is [D:\\PyEx\\math, C:\\Python36\\python36.zip, C:\\Python36\\DLLs, C:\\Python36\\lib, C:\\Python36, C:\\Python36\\lib\\site-packages, ..]
the value of m2 is 2
the value of m4 is 3.0
the value of m1 is 3
the value of m3 is 20

python不同目录间模块调用

标签:包含   named   lib   div   调用   pre   style   package   代码   

原文地址:https://www.cnblogs.com/panlj/p/11640698.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!