Python无法导入嵌套的modu

2024-10-02 22:31:18 发布

您现在位置:Python中文网/ 问答频道 /正文

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

模块“Selectors”中没有名称“Selector”

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

Tags: 模块frompyimport定义initmain文件名
2条回答

我设法找到了解决办法。你知道吗

问题是我没有使用正确的语法。一旦我添加了丢失的__init__()文件,我就使用import语句Import .parent_file from ParentClass,这样我就可以按照自己的意愿向上传递功能了。你知道吗

在选择器目录中,我可以使用from .selector import __SelectorSeasonSelector中使用

此外,我的sys.path中没有包含PyF1,因此python无法扫描目录。这包括在上面的语法允许我做我想做的事。你知道吗

你的目录应该是这样的

├── main.py
└── pyf1
    ├── selector.pyc
    ├── selectors
    |   ├── __init__.py
    │   ├── season_selector.py
    │   ├── season_Selector.pyc
    │   ├── selector.py
    │   ├── selector.pyc
    │   └── __init__.pyc
    ├── __init__.py
    ├── __init__.pyc
    ├── __pycache__
    │   └── __init__.cpython-38.pyc
    └── data

您的目录不是一个没有init.py的认证包,因此您不能进行import语句。我还冒昧地纠正了您如何命名模块,以符合良好的python命名约定\实践。有了它,您应该能够从您的内置包导入而不会出现问题

相关问题 更多 >