Python对象找不到属性错误
我有一个文件叫做 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 目录下并运行时,我没有发现任何问题。有没有人能告诉我这是怎么回事?
3 个回答
-1
正确设置你的PYTHONPATH:
export PYTHONPATH=/some/path:/some/path/lib
1
首先,确保你的lib目录里有一个__init__.py文件。然后你可以在driver.py文件中这样导入Parser类:
from lib.parser import Parser
这个__init__.py文件的作用是告诉Python解释器,这个目录应该被当作一个Python模块来处理(https://docs.python.org/2/tutorial/modules.html)。
1
有一个内置的Python模块叫做 parser
,这个模块会被优先导入,而不是你自己写的模块。最好的解决办法是不要把你的模块命名为这个名字,或者如果你真的想用这个名字,就把它放在一个包里面,这样就不会直接在顶层导入它了(也就是说,你应该用 import mypackage.parser
而不是 import parser
)。