python导入xlutils时遇到的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python导入xlutils时遇到的问题相关的知识,希望对你有一定的参考价值。

在使用xlutils模块下的copy时,遇到个疑惑
使用import xlutils 然后后面调用xlutils.copy() 或者xlutils.copy.copy()时报错,没有copy这个属性
但是使用from xlutils.copy import copy 后面调用copy()就能成功
为什么?谁能帮我解答

你可以用dir命令看看允许访问的方法,

>>> import xlutils
>>> dir(xlutils)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
>>> 
>>> from xlutils.copy import *
>>> dir(xlutils.copy)
['XLRDReader', 'XLWTWriter', '__builtins__', '__doc__', '__file__', '__name__', '__package__', 'copy', 'process']
>>>

单纯 import xlutils,没有copy方法让你访问,所以你定位不到copy.copy()。

参考技术A copy也是有自己的命名空间的,你导入的层级不够。追问

from xlutils.copy import copy 使用copy()

import xlutils 使用xlutils.copy.copy()
这两个有什么不同?

就比如import os 使用os.getcwd()
和from os import getcwd 使用getcwd()
是一样的~~~

追答

没什么不同,一般为了代码清晰,都是导入到最深一层的。

追问

关键就是import xlutils 使用xlutils.copy.copy() 报错~~为什么

Python import 模块导入问题

最近在用Python做决策树(Decision tree)时, 遇见了一个以前没有遇到的问题,就是用‘import sklearn.tree‘时一切正常,但是‘import sklearn..... sklearn.tree‘时却报错说: AttributeError: ‘module‘ object has no attribute ‘tree‘.

python的导入机制是这样的,在用 ‘import sklearn‘ 时,它只会导入 \${sklearn_dir}/__init__.py 里定义好的对象(objectives), 然后保存在自己的命名空间(namespace)里并可以后来直接使用; 在用‘ import sklearn.tree‘ 时,python实际上导入了两个文件,\${sklearn_dir}/__init__.py 和 \${sklearn_dir}/tree/__init__.py, 注意tree在这儿是以一个子文件夹的形式存在的。

这样回归到一开始的问题,就会发现是因为 sklearn.tree是一个单独存在的子文件夹/模块,并且在__init__.py里没有被定义,这样当然就不能用第一种办法来引用啦~

以上是关于python导入xlutils时遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章

使用 pandas read_json 导入文件时遇到问题

在 Nuke 导入 pandas 模块时遇到问题

MySQL导入导出数据时遇到Tab符号和换行符号怎么办

我在尝试导入 pybel 模块时遇到 AttributeError

在 Lion 上安装 MySQLdb 时遇到困难 - 导入找不到模块

安装 cx_Oracle - Python 时遇到问题?