如何使用Python从嵌套的子目录中导入某些内容?

在我的主文件(根级别)中,我有:

from deepspeech2_utils import reduce_tensor, check_loss

我还有一个:__init__.py

from submodules.deepspeech2 import utils as deepspeech2_utils

我有一个目录结构,如下所示:

main.py
__init__.py
-submodules
  -deepspeech2
    -utils.py

但是我收到一个错误:

    from deepspeech2_utils import reduce_tensor, check_loss
ImportError: No module named deepspeech2_utils

我还尝试了:

from submodules.deepspeech2.utils import reduce_tensor, check_loss

但得到同样的错误。

我做错了什么?


大话西游666
浏览 124回答 1
1回答

慕神8447489

因此,在python中将目录识别为模块的方式是通过这些目录中存在文件。这些文件不需要有代码。因此,将目录结构更改为如下所示__init__.py__init__.pyroot     main.py     __init__.py     submodules         __init__.py         deepspeech2             __init__.py             utils.py现在,一旦完成此操作,您的 import 语句(如果没有上述目录更改就无法工作)具有作用域,它将在具有不同作用域的您的作用域中不可见。为了实现您正在做的事情,请将您的进口声明更改为 main.py__init__.pymain.pyfrom root.deepspeech2_utils import reduce_tensor, check_loss除了命名空间的原因之外,我还必须建议,不鼓励导入,因为模块的用户可能只想从模块/子模块中导入特定内容,并且导入语句将强制他们拥有比他们想要的更多的导入。这是另一篇详细讨论此类问题的帖子的答案__init__.py__init__.py
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python