在包下导入子类:ModuleNotFoundError



./package/test.py工作顺利。我希望./test.py能像那样顺利工作,但我正在运行./test.py:

Traceback (most recent call last):
File "test.py", line 2, in <module>
from package.subclass import Subclass
File ".../package/subclass.py", line 1, in <module>
from subclass import Subclass
ModuleNotFoundError: No module named 'subclass'

可以导入class1。当它读取子类的第一行时,它会给出ModuleNotFoundError。我尝试过./package/__init__.py,一个空的会出现与上面相同的错误。当我在./package/__init__.py中有正确的导入时,错误甚至无法在__init__.py的第1行中找到class1

文件目录如下:

./package/class1.py
./package/class2.py
./package/subclass.py
./package/test.py
./test.py

代码:

# ./package/class1.py
class Class1():
...
# ./package/class2.py
class Class2():
...

# ./package/subclass.py
from class2 import Class2
class Subclass(Class2):
...
# ./package/test.py
from class1 import Class1
from subclass import Subclass
...
# ./test.py
from package.class1 import Class1
from package.subclass import Subclass
...

设置PYTHONPATH可能是一个选项。或者,考虑到您当前的结构:

#subclass.py
from .class2 import Class2
class Subclass(Class2):
pass
#package/test.py
from .class1 import Class1
from .subclass import Subclass
#test.py
from package.class1 import Class1
from package.subclass import Subclass

要运行test.py,只需运行python test.pypython -m test要运行package/test.py,您必须使用python -m package.test

尝试向目录添加一个空的__init__.py

__init__.py告诉python解释器它正在处理的目录实际上是一个模块。

希望这能有所帮助!

除了正确的__init__.py,您还需要使用:

from package.class1 import Class1
from package.subclass import Subclass

注意添加的package.。只要一个点也可以,因为这将是一个相对的重要性。

相关内容

  • 没有找到相关文章

最新更新