ImportError:无法导入名称open_workbook

时间:2013-01-27 04:31:30

标签: python excel importerror xlrd

我在使用xlrd时遇到问题。我正在使用Fedora 17。

我跑了

python run.py

我收到了错误

ImportError: cannot import name open_workbook

我已经谷歌搜索了很长一段时间,并没有找到解决方案。这有点令人沮丧。

根据我在Google上发现的内容,我认为它与Python有关,正在寻找xlrd并找到冲突的文件/文件夹。如果是这种情况,我猜它与我安装xlrd的方式有关。首先,我相信我下载了一个rpm文件(我无法找到我从中下载的确切位置)。在我这样做之后,我的文件运行正常但是由于某种原因我决定我需要从更有信誉的源安装xlrd。所以我去http://www.python-excel.org/并使用那里的链接下载它。它安装得很好,但这是我开始收到导入错误。

如果可能的话,我想从我的电脑上完全卸载xlrd并重新开始。如果这有用与否,我不知道。但是,如果有人能够指出我的方向是正确的那么好。

这是我的代码:

from xlrd import open_workbook

wb = open_work('week 1/AFROTC SP13 Eagles Sqaudron Weekly Attendance.xls')

LLab = {}
TuesPT = {}
ThursFriPT = {}

for s in wb.sheets():
    if s.name == "LLab":
        for row in range(s.nrows):
            values = []
            for col in range(s.ncols):
                values.append(s.cell(row,col).value)
            if values[0] != "end":
                if values[1] == "0" or values[1] == "1":
                    LLab[values[0]]=int(values[1])

    elif s.name == "TuesPT":
        for row in range(s.nrows):
            values = []
            for col in range(s.ncols):
                values.append(s.cell(row,col).value)
            if values[0] != "end":
                if values[1] == "0" or values[1] == "1":
                    TuesPT[values[0]]=int(values[1])

    elif s.name == "ThursFriPT":
        for row in range(s.nrows):
            values = []
            for col in range(s.ncols):
                values.append(s.cell(row,col).value)
            if values[0] != "end":
                if values[1] == "0" or values[1] == "1":
                    ThursFriPT[values[0]]=int(values[1])

print "LLab"
for key in LLab:
    print key,
    print LLab[key]

print
print

print "TuesPT"
for key in TuesPT:
    print key,
    print TuesPT[key]

print
print

print "ThursFriPT"
for key in ThursFriPT:
    print key,
    print ThursFriPT[key]

1 个答案:

答案 0 :(得分:2)

根据我们在上述评论中的讨论,最终的原因是目录中有一个名为copy的文件。这导致了一个问题,因为formula包中的xlrd模块正在尝试import copy,但是它导入了本地命名的copy而不是内置版本,导致错误。