以下目录作为例子:
FOO
|-- foo
|----foo.py
|----test.py
|----main
|------model.py
|--bin
|----lib.py
|----bin64
|------model64.py
|--source.py
最常用的方法【规范的工程文件目录】
# 1. 同级目录
import test
# 2. 子目录下
import foo.main.model as model
# 3. 父目录的同级目录下
import bin.lib as lib
# 4. 父目录的同级目录下的子目录
import bin.bin64.model64 as model64
# 5. 导入上级目录
import source
其他方法
导入同级模块
python导入同级模块(在同一个文件夹中的py文件)直接导入即可。
例如foo.py
中导入test.py
,则直接在foo.py
中加入:
import test
导入下级模块
导入下级目录模块需在下级目录中新建一个空白的__init__.py
文件再导入。
例如在foo.py
中导入model.py
,则需要在main
目录中创建一个文件__init__.py
,然后在foo.py
中加入:
# 方法一:
from dir3 import file3
# 方法二:
import dir3.file3
# 或者
import dir3.file3 as df3
导入上级模块
要导入上级目录下模块,可以使用sys.path
。
例如foo.py
中导入source.py
,则需要在foo.py
中加入:
import sys
sys.path.append("..")
import source
其中sys.path
的作用:当使用import
语句导入模块时,解释器会搜索当前模块所在目录以及sys.path
指定的路径去找需要import
的模块,因此在这里需要把上级目录加到了sys.path
里。
“..”的含义:等同于linux里的‘..’,表示当前工作目录的上级目录。实际上python中的‘.’也和linux中一致,表示当前目录。
导入隔壁文件夹下的模块
这其实是前面两个操作的组合,其思路本质上是将上级目录加到sys.path
里,再按照对下级目录模块的方式导入,同样需要被引用文件夹下有空的__init__.py
文件。
例如在foo.py
中引入bin
目录下的lib.py
,需要在bin
目录下添加文件__init__.py
,然后在foo.py
中加入:
import sys
sys.path.append("..")
from bin import lib