0

我通过以下方式在 Eclipse 中创建以下包PyDev

class Repository(object):
    '''
    classdocs
    '''

    def __init__(self):
        '''
        Constructor
        '''
        print("salaam")

class Materials(Repository):
    '''
    '''

    def __init__(self):
        '''
        constructor
        '''

我的主要文件是:

if __name__ == '__main__':
    pass

import repository;


x = Repository();

当我运行我的应用程序时,我收到以下错误:

x = Repository();

NameError: name 'Repository' is not defined

当然,我在导入模块时收到警告。

我知道我的主文件的导入和关系以及我的包或 Eclipse 配置有问题。

我的 <code>project</code> 的 <code>dir struct</code>

4

2 回答 2

3

首先,当你像这样导入时,你只能将你的类称为要么 要么repository.Repositoryrepository.repository.Repository这取决于你是导入模块还是包。

其次,您导入的内容取决于 eclipse 认为您在哪里。你可以检查一下

import os
print(os.pwd)

在主脚本的顶部。

第三,如果你想像这样导入你的包,你应该把它放在你的搜索路径中。您可以通过将其放在站点包中来做到这一点,或者例如通过添加

import sys
import os
sys.path.append(os.path.abspath(__file__))

在主脚本的顶部

此外,您可能希望通过为模块指定与包不同的名称来避免混淆(或相反)

(还有一点点挑剔:__init__不是构造函数,只是一个初始化例程)。

于 2013-08-25T09:51:37.747 回答
2

导入错误。

代替

import repository

你想为你的案子写:

from repository.repository import Repository

至于 PyDev 给出的错误,此时它是正确的,当您修复代码时,它应该停止抱怨。

于 2013-08-25T19:53:13.503 回答