在写python脚本时,导入模块报错:
代码:

#!/usr/bin/env python
#coding:utf-8

import salt.config
import salt.fileclient

# 下面这一串内容,官方文档有
__opts__ = salt.config.minion_config('/etc/salt/minion')
__grains__ = salt.loader.grains(__opts__)
__opts__['grains'] = __grains__
__utils__ = salt.loader.utils(__opts__)
__salt__ = salt.loader.minion_mods(__opts__, utils=__utils__)

print(type(__opts__))
for k,v in __opts__.items():
    if "master" in k or "port" in k:
        print(k,v)

执行报错:

Traceback (most recent call last):
  File "t.py", line 5, in <module>
    import salt.fileclient
  File "/usr/lib/python2.7/site-packages/salt/fileclient.py", line 21, in <module>
    import salt.client
  File "/usr/lib/python2.7/site-packages/salt/client/__init__.py", line 31, in <module>
    import salt.cache
  File "/usr/lib/python2.7/site-packages/salt/cache/__init__.py", line 17, in <module>
    import salt.loader
  File "/usr/lib/python2.7/site-packages/salt/loader.py", line 39, in <module>
    import pkg_resources
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 26, in <module>
    import zipfile
  File "/usr/lib64/python2.7/zipfile.py", line 501, in <module>
    class ZipExtFile(io.BufferedIOBase):
AttributeError: 'module' object has no attribute 'BufferedIOBase'

将脚本内容直接改成:

#!/usr/bin/env python
#coding:utf-8
import zipfile

报错如下:

Traceback (most recent call last):
  File "t.py", line 5, in <module>
    import io.BufferedIOBase
ImportError: No module named BufferedIOBase

也就是说:直接导入io.BufferedIOBase也报错

解决:
怀疑是sys.path中的目录下同样的io.py文件;

进入其他目录:到ipython中执行导入import zipfile,ok

回头当之前的目录,发现在当前/root目录下就有一个io.py,这个是zabbix用来做iostat收集io数据的测试脚本
重命名这个文件,ok

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐