我有一个文件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并运行时,我没有发现任何问题。谁能指出我发生了什么?
答案 0 :(得分:1)
有一个名为parser
的内置Python模块,它正在导入而不是您的模块。最好的解决方案是不要将您的模块命名为,或者,如果您这样做,请将其放入包中,这样您就不会直接在顶层导入它(即,import mypackage.parser
而不是import parser
)。
答案 1 :(得分:1)
首先确保lib目录中有__init__.py文件。然后,您可以在driver.py文件中导入Parser类,如下所示:
from lib.parser import Parser
__init__.py文件让python解释器知道该目录将被视为python模块(https://docs.python.org/2/tutorial/modules.html)。
答案 2 :(得分:-1)
正确设置你的PYTHONPATH:
export PYTHONPATH=/some/path:/some/path/lib