Python无法导入嵌套模块

时间:2019-12-18 17:00:08

标签: python

我目前正在用Python编写一个库。我正在尝试使用我在模块中定义的类,但无法在main.py中使用它。在Selector和SeasonSelector内部,我有2个用相同文件名定义的类。我收到以下错误:

模块“选择器”中没有名称“选择器”

main.py

import pyf1

testSeasonSelector = pyf1.Selectors.SeasonSelector()
testSelector.loadData()

pyf1/__init__.py

from Selectors.Selector import Selector
from Selectors.SeasonSelector import SeasonSelector

目录

├── main.py
└── pyf1
    ├── Selector.pyc
    ├── Selectors
    │   ├── SeasonSelector.py
    │   ├── SeasonSelector.pyc
    │   ├── Selector.py
    │   ├── Selector.pyc
    │   └── __init__.pyc
    ├── __init__.py
    ├── __init__.pyc
    ├── __pycache__
    │   └── __init__.cpython-38.pyc
    └── data

2 个答案:

答案 0 :(得分:0)

您的目录应如下所示

import json

class ParentClass():
    def __init__(self):
        self.parent_string = "Parent String"

class ChildClass(ParentClass):
    def __init__(self):
        super().__init__()
        self.child_string = "Child String"

child_instance = ChildClass()
json = json.dumps(child_instance.__dict__)

print(json)  # {"parent_string": "Parent String", "child_string": "Child String"}

您的目录不是没有 init .py的经过认证的软件包,因此您无法创建导入语句。我还自由地更正了如何命名模块以适合良好的python命名约定\惯例。有了这个,您应该可以从构建的包中顺利导入

答案 1 :(得分:0)

我设法找到了解决方法。

问题是我没有使用正确的语法。添加丢失的__init__()文件后,我使用了导入语句Import .parent_file from ParentClass,该语句使我可以按自己的意愿在功能链中传递功能。

然后在Selectors目录中,我可以使用from .selector import __SelectorSeasonSelector中使用

此外-我的sys.path中没有包含PyF1,因此python无法扫描目录。上面语法中包含的内容使我可以做自己想做的事。