python对象找不到属性错误

python对象找不到属性错误,python,class,static,attributes,Python,Class,Static,Attributes,我有一个parser.py文件 class Parser: ... ... @staticmethod def someMethod(): Parser.argsParser.someNewMethod() 和一个文件worker.py import connection, parser ... ... class Worker: def __init__(self): try: parsed

我有一个parser.py文件

class Parser:
    ...
    ...

    @staticmethod
    def someMethod():
        Parser.argsParser.someNewMethod()
和一个文件worker.py

import connection, parser
...
...

class Worker:
    def __init__(self):
        try:
            parsed = parser.Parser()
和文件driver.py:

sys.path.append('./lib')
import worker, parser

parser.Parser.someMethod()
现在我的目录结构是

/some/path/driver.py
/some/path/lib/worker.py
/some/path/lib/parser.py
当我运行driver.py时,我得到:

Traceback (most recent call last):
  File "./lib/worker.py", line 13, in __init__
    parsed = parser.Parser()
AttributeError: 'module' object has no attribute 'Parser'
'module' object has no attribute 'Parser'

但是,当我将driver.py复制到./lib并运行时,没有发现任何问题。有人能告诉我发生了什么吗?

正确设置PYTHONPATH:

export PYTHONPATH=/some/path:/some/path/lib

有一个名为的内置Python模块,正在导入该模块而不是您的模块。最好的解决方案是不要给模块命名,或者,如果你这样做了,就把它放在一个包中,这样你就不会直接在顶层导入它(也就是说,你这样做是
导入mypackage.parser
,而不是
导入parser
)。

首先确保你的lib目录中有一个u init\uuuuuuy.py文件。然后,您可以在driver.py文件中导入解析器类,如下所示:

from lib.parser import Parser

py文件让python解释器知道该目录将被视为python模块()。

我认为它与路径无关,问题是找不到类“Parser”,而不是文件“Parser.py”,谢谢!这澄清了init.py的一些用法,但是我不得不接受另一个答案,因为它更准确地回答了这个问题:)