python 中导入其他模块

导入其他模块

在写一个稍微大型的python工具或者项目的时候,不可避免的需要大量的导入自定义的模块以及系统模块,由于多层次的目录结构,使得新手再导入自定义模块的经常出现“ModuleNotFoundError: No module named异常”,既找不到该模块的问题

基础概念

模块

模块一般情况下是指一个.py的文件,其他可作为module的文件类型还有".pyo"、".pyc"、".pyd"、".so"、".dll",但Python初学者几乎用不到,module 可看作一个工具类,可共用或者隐藏代码细节,将相关代码放置在一个module以便让代码更好用、易懂,让coder重点放在高层逻辑上

为了避免模名块冲突,Python引入了按目录组织模块的方法,称之为 包(package)。包 是含有Python模块的文件夹。

每个包的文件夹下按照规范应当存在一个__init__.py的文件,用来表示该文件夹是一个包。
init.py文件其中用以组织包,控制着包的导入行为。

一般来讲不要在__init__.py文件中写程序,保证该文件的简介,若要使用 from package import *时,需要在__init__.py中定义__all__变量,导入时会dict中所有文件导入。

__all__ =['filea_name','fileb_name']

模块检索过程以及解决办法

当使用 import 语句导入模块后,Python会按照以下顺序查找指定的模块文件

  • 当前目录下查找
  • 到 PYTHONPATH(环境变量)下的每个目录中查找;
  • python默认安装目录下查找

上面所说的所有目录,均被保存在sys.path中,既sys.path中的路径会被python进行检索,以下是我本机的python的sys.path
在这里插入图片描述

因为python会在sys.path中的路径中检索相应模块,因此解决模块找不到的问题可以从以下几个方面解决问题。

  • 将模块或者包写在当前目录下
  • 将模块的位置添加到sys.path的位置。sys.path.append(“路径”)
  • 将编写的模块的路径添加到系统变量中

参考

http://c.biancheng.net/view/4645.html
https://blog.csdn.net/weixin_38256474/article/details/81228492
https://www.cnblogs.com/bandaobudaoweng/p/10083868.html

Guess you like

Origin blog.csdn.net/qingzhantianxia/article/details/114091278