python在不同层级目录import模块的方法/no module named "XX"问题
使用python进行程序编写时,经常会使用第三方模块包。这种包我们可以通过python setup install 进行安装后,通过import XXX或from XXX import yyy 进行导入。不过如果是自己遍写的依赖包,又不想安装到python的相应目录,可以放到本目录里进行import进行调用;为了更清晰的理清程序之间的关系,例如我们会把这种包放到lib目录再调用。本篇就针对常见的模块调用方法汇总下。
一、同级目录下的调有
程序结构如下:
– src
|-- mod1.py
|-- test1.py
若在程序test1.py中导入模块mod1, 则直接使用
import mod1
或
from mod1 import *;
二、调用子目录下的模块
程序结构如下:
– src
|-- mod1.py
|-- lib
| |-- mod2.py
|-- test1.py
这时看到test1.py和lib目录(即mod2.py的父级目录),如果想在程序test1.py中导入模块mod2.py ,可以在lib件夹中建立空文件__init__.py文件(也可以在该文件中自定义输出模块接口),然后使用:
from lib.mod2 import *
或
import lib.mod2.
三、调用上级目录下的文件
程序结构如下:
– src
|-- mod1.py
|-- lib
| |-- mod2.py
|-- sub
| |-- test2.py
这里想要实现test2.py调用mod1.py和mod2.py ,做法是我们先跳到src目录下面,直接可以调用mod1,然后在lib上当下建一个空文件__init__.py ,就可以像第二步调用子目录下的模块一样,通过import lib.mod2进行调用了。
Python的模块有自带的也有第三方,还可以自定义然后引用
1、调用自带的模块,例如,sys
调用自带的模块只需要import sys 引入既可以使用
2、第三方的需要先安装模块然后再import引入
3、自定义:
(1)同级目录模块的调用
test
-----t1.py
-----t2.py
-----test1
-----------testm.py
-----test2
-----------testmm.py
t1.py要调用t2.py中的模块:
import t2
t2.func()
(2)上级目录调用下级目录,需要在下级目录中创建__init__.py文件,该文件可以什么都不写
t1.py调用test1中的testm.py,在test1目录下创建__init__.py文件
from test1.testm.py import *
func()
使用from的时候不需要使用模块名字调用,或者是
import test1.testm
test1.testm.func()
使用import的时候需要添加包名和模块名进行调用
(3)同级目录之间文件的调用,被调用文件所在的目录下需要创建__init__.py文件
test2目录下的testmm.py文件调用test1目录下的testm模块,在test1目录下创建__init__.py
import sys
sys.path.append("…")
import test1.testm
test1.testm.func()
或者是
import sys
sys.path.append("…")
from test1.testm import *
func()