ImportError:没有名为 arff 的模块

Posted

技术标签:

【中文标题】ImportError:没有名为 arff 的模块【英文标题】:ImportError: No module named arff 【发布时间】:2014-03-15 15:37:21 【问题描述】:

这是link 中的一个简单代码,用于在 python 中读取 arff 文件(注释的那个也不起作用):

import arff
for row in arff.load('heart_train.arff'):
        print(row.sex)  

这是我收到的错误:

python id3.py 
Traceback (most recent call last):
  File "id3.py", line 1, in <module>
    import arff
ImportError: No module named arff

“heart_train”arff 文件数据如下:

@relation cleveland-14-heart-disease
@attribute 'age' real
@attribute 'sex'  female, male
@attribute 'cp'  typ_angina, asympt, non_anginal, atyp_angina
@attribute 'trestbps' real
@attribute 'chol' real
@attribute 'fbs'  t, f
@attribute 'restecg'  left_vent_hyper, normal, st_t_wave_abnormality
@attribute 'thalach' real
@attribute 'exang'  no, yes
@attribute 'oldpeak' real
@attribute 'slope'  up, flat, down
@attribute 'ca' real
@attribute 'thal'  fixed_defect, normal, reversable_defect
@attribute 'class'  negative, positive
@data
63,male,typ_angina,145,233,t,left_vent_hyper,150,no,2.3,down,0,fixed_defect,negative
37,male,non_anginal,130,250,f,normal,187,no,3.5,down,0,normal,negative
41,female,atyp_angina,130,204,f,left_vent_hyper,172,no,1.4,up,0,normal,negative
56,male,atyp_angina,120,236,f,normal,178,no,0.8,up,0,normal,negative
57,female,asympt,120,354,f,normal,163,yes,0.6,up,0,normal,negative
57,male,asympt,140,192,f,normal,148,no,0.4,flat,0,fixed_defect,negative
...

【问题讨论】:

你的代码中有没有这行:import arff ? 是的,我有。它只是没有被复制。 其实是在问题里但是不显示!!!?! 【参考方案1】:

您应该将脚本从 arff.py 重命名为不同的名称,例如 arfftest.py。 Python无法导入您需要的arff模块,因为它的名称与您的应用程序文件名相同。

如果您还没有安装 arff 包本身,请使用 pip 或 easy_install 安装它:

pip install arff
# or easy_install arff
# or pypm install arff

【讨论】:

Monas-MacBook-Pro: mona$ python id3.py Traceback (most recent call last): File "id3.py", line 1, in &lt;module&gt; import arff ImportError: No module named arff @MonaJalal 那个错误意味着 python 找不到 arff。你安装了吗? 感谢我使用pypm install arff 安装它我收到此错误:`python id3.py Traceback(最近一次调用最后):文件“id3.py”,第 3 行,在 打印(row.sex) 文件“/Users/mona/Library/Python/2.7/lib/python/site-packages/arff/__init__.py”,第 102 行,在 getattr 返回 object.__getattr__( self, key) AttributeError: type object 'object' has no attribute 'getattr'` 你有哪个 python 版本?它在 python 2.7 和 3.2 上测试【参考方案2】:

在我更改你的 arff 文件后,它就可以工作了:

注意:我从属性的第二列中删除了单个代码。

这是 arff 文件:

@relation cleveland-14-heart-disease
@attribute age real
@attribute sex  female, male
@attribute cp  typ_angina, asympt, non_anginal, atyp_angina
@attribute trestbps real
@attribute chol real
@attribute fbs  t, f
@attribute restecg  left_vent_hyper, normal, st_t_wave_abnormality
@attribute thalach real
@attribute exang  no, yes
@attribute oldpeak real
@attribute slope  up, flat, down
@attribute ca real
@attribute thal  fixed_defect, normal, reversable_defect
@attribute class  negative, positive
@data
63,male,typ_angina,145,233,t,left_vent_hyper,150,no,2.3,down,0,fixed_defect,negative
37,male,non_anginal,130,250,f,normal,187,no,3.5,down,0,normal,negative
41,female,atyp_angina,130,204,f,left_vent_hyper,172,no,1.4,up,0,normal,negative
56,male,atyp_angina,120,236,f,normal,178,no,0.8,up,0,normal,negative
57,female,asympt,120,354,f,normal,163,yes,0.6,up,0,normal,negative
57,male,asympt,140,192,f,normal,148,no,0.4,flat,0,fixed_defect,negative

片段和输出:

:/tmp:~ cat a.py
import arff
for row in arff.load('heart_train.arff'):
   print(row.sex)
:/tmp:~ python a.py
male
male
female
male
female
male
:/tmp:~
male
:/tmp:~

【讨论】:

以上是关于ImportError:没有名为 arff 的模块的主要内容,如果未能解决你的问题,请参考以下文章

ImportError:没有名为瓶子的模块

ImportError:没有名为 ghostscript 的模块

ImportError:没有名为枚举的模块

ImportError:没有名为 pynotify 的模块。安装模块时

ImportError:没有名为 websocket 的模块

ImportError:没有名为“backports”的模块