Python导入模块

模块,即某个功能代码的集合

导入模块的基本方法

1
2
3
4
import module
from module.xx.xx import xx
from module.xx.xx import xx as rename
from module.xx.xx import *

导入模块其实就是告诉Python解释器去解释那个py文件

  • 导入一个py文件,解释器解释该py文件
  • 导入一个包,解释器解释该包下的 __init__.py 文件

导入模块的路径

1
2
3
>>> import sys
>>> sys.path
['', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python35.zip', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/plat-darwin', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/lib-dynload', '/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages']

导入指定路径的模块

加入需要导入sys.path中不存在的路径下的模块,此时可以手动添加指定路径到sys.path中(仅当次生效)

1
2
3
4
5
# 添加上上级目录到path中
import sys
import os
project_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(project_path)
  • __file__ 获取以当前路径为基准的文件相对路径
  • os.path.abspath(__file__) 获取当前文件的绝对路径
  • os.path.dirname(os.path.abspath(__file__)) 获取当前文件所在文件夹的绝对路径(上级目录)
  • os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 获取当前文件的上上级目录

模块中的特殊变量

  • __doc__ 获取模块实现功能的简单描述

  • __file__ 获取以当前路径为基准的文件相对路径

  • __package__ 获取该文件的上层包名

  • __cached__ 实际被导入的缓存文件绝对路径

1
2
3
4
5
6
import maopao

print(maopao.__cached__)

------------
/Users/lvrui/PycharmProjects/untitled/6/c/__pycache__/maopao.cpython-35.pyc
  • __name__ 获取模块/文件的调用者
1
2
# maopao.py
print(__name__)
1
2
3
4
5
6
7
8
# test.py
import maopao

print(__name__)

------------
maopao
__main__