自定义模块调用
我们在进行编码设计的时候,往往需要自定义一些模块,其他程序可以调用这些模块,方法和原理其实和内置系统模块调用是差不多的。不过自定义模块的话有几种位置关系。【实验环境:py3.6】
1 同一文件夹下:
在 test 文件夹下有 test1.py 和 test2.py
test/
-------------/ test1.py
-------------/test2.py
如果在test1.py中需要引用test2.py方法,此种情况可以直接使用 import test2,就可以进行 test2.*() 【*为test2.py中的某个函数】
2 跨文件夹引用(父子文件夹):
test/
-------------/ test1.py
-------------/test2.py
-------------/test1/test1_1.py
-------------/test1/test1_2.py
则从从上面的目录结构可以清晰知道,这里我在test文件夹下新建了 test1文件夹,test1文件夹下又有 test1_1.py, test1_2.py
这是如果 test1_1.py 与 test1_2.py 相互引用 仍和 【情况1】一样。如果 test1.py或者 test2.py 想要引用 test1_1.py 或者 test1_2.py 。则需要在 test1 文件夹下新建一个 __init__.py 文件,该文件可以为空。目录结构如下:
test/
-------------/ test1.py
-------------/test2.py
-------------/test1/test1_1.py
-------------/test1/test1_2.py
-------------/test1/__init__.py
另外由于,从目录结构可以看出test1.py和 test2.py与 test1 文件夹同级,在test1.py 或者 test2.py中调用 test1_1.py 或者 test1_2.py 时 可以直接使用 from test1 import test1_1,test1_2 ;
如果从 test1_1.py,test1_2.py 调用 test1.py 或者 test2.py 需要使用,注意 test文件夹下不用写__init__.py
import sys
sys.path.append('..')
import test1,test2
【运行时侯注意是在 test1文件夹下,因为 sys.path.append(‘..’) 是相对路径】
3 跨文件夹引用(子子同级文件夹):
这种引用是工程里最常用的引用方式。
test/
-------------/ test1.py
-------------/test2.py
-------------/test1/test1_1.py
-------------/test1/test1_2.py
-------------/test1/__init__.py
------------/test2/test2_1.py
-------------/test2/test2_2.py
-------------/test2/__init__.py
test1和test2均为test文件夹的子文件夹,test2_1.py 与 test1_1.py ,test1_2.py 进行互相引用时,需要使用:
import sys
sys.path.append('..')
from test1 import test1_1,test1_2
【运行时侯注意是在 test2文件夹下,因为 sys.path.append(‘..’) 是相对路径】
希望对您有帮助!