ModuleNotFoundError: No module named
上边的这个错误,可能是Python初学者在刚开始试图写一些复杂一点的Python程序时经常遇到的错误。 找不到模块~
这篇文章的目的,就是为了简要说明Python包的引用机制。以及列举这些包的一些方法。
1 Python解释器查找包(模块)的顺序:
- 内存(模块缓存)
- 内置模块built-in module(例如: sys、os,可通过sys.builtin_module_names查看)
- sys.path(环境变量中)
sys.path列表中index:0(第一个元素),为被执行python文件所在目录,优先级最高 - 标准库(可通过sys.modules查看)
- pth 文件(Python会寻找.pth文件,然后将文件里路径加入sys.path) 这个文件很有用,稍后会有一篇文章专门介绍.pth文件
- 第三方库(你pip install的库)
2 查看模块
2.1 方法0. 仅查看内部方法
@tdouya.learning.timer_verbose
def show_modules():
return sys.builtin_module_names # 就这句
2.2 方法1. 使用shell命令行
$ pydoc modules
2.3 方法2. Python控制台使用help()
方法查看
>>> help('modules')
2.4 方法3. 通过sys
模块查看
>>> import sys
>>> sys.modules.keys()
2.5 方法4. 通过pip查看
2.5.1 直接在shell控制台
$ pip list
$ pip freeze
2.5.2 通过程序(来源资料,实测无法执行)
import pip
installed_packages = pip.get_installed_distributions() # pip.get_installed_distributions 此方法不存在
installed_packages_list = sorted(["%s==%s" % (i.key, i.version) for i in installed_packages])
print(installed_packages_list)