Python import 失败

 今天在使用caffe的python接口的时候出现了:ImportError: No module named google.protobuf.internal  的错误(源代码里写的是from google.protobuf.internal import **),

接下来通过相对导入的方式,即将google包的路径加入到path下,还是那个错误,接下来通过绝对导入的方式就成功了,再后来通过导入protobuf包的相对路径就成功了(即修改为from protobuf.internal import **,并将protobuf路径加入到path下)。
后来查到原因是protobuf目录下比google目录下多个__init__.py ,而__init__.py 文件的作用是将文件夹变为一个Python模块,所以原因就是google目录下没有这个文件,所以google目录就不是个模块,from google.protobuf.internal import ** 也会出错。
下面再顺便介绍一下这个__init__.py的作用:
1、init.py是Python中package的标识。init.py 文件的一个主要作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件

2、批量引入(定义__all__用来模糊导入)

我们在python中导入一个包时,实际上是导入了它的__init__.py文件,这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入。

3、配置模块的初始化操作,这个文件也是一个正常的python代码文件,因此可以将初始化代码放入该文件中。

扩展资料
python中__init__.py文件的作用实例:

python的每个模块的包中,都有一个__init__.py文件,有了这个文件,我们才能导入这个目录下的module。init.py里面还是可以有内容的,我们在导入一个包时,实际上导入了它的__init__.py文件。
我们可以再__init__.py文件中再导入其他的包,或者模块。

[python]

import readers

import writers

import commands

import users

import meta

import auth

import admin

这样,当我们导入这个包的时候,init.py文件自动运行。帮我们导入了这么多个模块,我们就不需要将所有的import语句写在一个文件里了,也可以减少代码量。不需要一个个去导入module了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值