from import 导入时找不到module的解决办法(Python模块包中_init_.py文件的作用)

背景


最近在使用Pycharm开发python脚本时,遇到这样一个现象:打开别人给的工程,环境配置都没有问题,前一天晚上还能正常执行脚本,但第二天早上上班的时候,再次打开工程执行脚本竟然执行不了了。

正文

Ⅰ、报错信息


报错信息就是找不到本地导入的模块。凡是本地的模块被引入到其他脚本文件中都读取不到。

Ⅱ、问题解决


在被引入.py文件的所在package下新建一个_init_.py文件(from 后面每一级package下都需要建立这个文件),文件里面的内容如下:

import os,sys

curPath = os.path.abspath(os.path.dirname(__file__))
sys.path.append(curPath)


比如我的一个testMain.py文件需要引入的包如下:

from api.functional.front.robotsTest import TestRobotsAPI


那么我需要在from后面的每一级package下都要建立_init_.py文件。如图所示:
在这里插入图片描述

Ⅲ、问题分析


执行python脚本时,from import 的模块没有被加载进来,找不到module,根本原因就是该工程的路径没有识别到,当前工作目录没有被加载到工程中。

Ⅳ、init.py文件作用


其实如果我们新建一个python类型的包时(不仅仅是Directory)会有一个默认的空_init_.py文件,

在这里插入图片描述
在这里插入图片描述

  在python模块的每一个包中,都有一个__init__.py文件(这个文件定义了包的属性和方法),然后是一些模块文件和子目录,假如子目录中也有 init.py 那么它就是这个包的子包了。当你将一个包作为模块导入的时候,实际上导入了它的 init_.py 文件。
  一个包是一个带有特殊文件 init.py 的目录。init.py 文件定义了包的属性和方法。其实它可以什么也不定义;可以只是一个空文件,但是必须存在。如果 init.py 不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入或者包含其它的模块和嵌套包。

  • 18
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值