2012-06-01 75 views
3

我试图调用模块,但有些原因它给了我错误。 data.py包含项目列表,并在main.py我试图迭代和打印items.but我得到下面的错误。Python调用模块

错误

Import error: No module named Basics 

两个data.py & main.py存在于c:/ python27 /基础/

data.py

bob={'name':'bobs mith','age':42,'salary':5000,'job':'software'} 
sue={'name':'sue more','age':30,'salary':3000,'job':'hardware'} 
people=[bob,sue] 

main.py

from Basics import data 

if __name__ == '__main__': 
    for key in people: 
     print(key, '=>\n ', people[key]) 

如果我只是给出导入数据,那么我得到下面的错误

名称错误:name'people'没有被定义。

更新:

新代码:

from Basics import data 

if __name__ == '__main__': 

    for key in data.people: 
     print(key, '=>\n ', data.people[key]) 

类型错误:列表索引必须是整数,而不是字典

回答

1

对于第二部分,“people”对象是包含两个字典的列表。所以,你要做到这一点:

for person in people: 
    for key in person: 
    print(key, '=>\n ', person[key]) 
5

你需要在你的基础知识目录__init__.py

而且

你需要在你的目录PYTHON_PATHsys.path

要使用你需要做的人之一。

from Basics.data import people 

或者

from Basics import data 
print data.people 
+0

它的工作now..but如何打印每个元素key..I在主体部分 – user1050619

1

你做出c:/python27/basics/一个__init__.py

此外,可能很好的做法是使导入Basics的情况与目录basics的情况匹配。在我认为的窗口上没有关系,但它肯定会在unix下。

+0

我在哪里可以得到__init__.py文件中添加的代码的人? – user1050619

+0

我能够从一个不同的文件夹中复制..感谢 – user1050619

+0

@ user1050619如果您在加载模块时不需要初始化任何内容,则模块中的__init __。py'文件可以为空。 –