【问题标题】:Import a module function from another folder in my module in python在 python 中从我的模块中的另一个文件夹导入模块函数
【发布时间】:2021-08-27 07:58:14
【问题描述】:

我目前正在构建一个具有如下架构的自定义模块:

module/
│
├── util/
│   ├── metrics.py
│   └── util.py
│
└── training/
    ├── pretraining.py
    └── training_step.py

在我的pretraining.py 脚本中,我需要使用位于util.py 的函数。不知道怎么导入到pretraining.py

到目前为止,我尝试了经典:

from util.metrics import accuracy

我收到以下错误:

Traceback (most recent call last):
  File "pretraining.py", line 5, in <module>
    from util.metrics import accuracy
ModuleNotFoundError: No module named 'util'

如何在 pretraining.py 中导入函数?

【问题讨论】:

  • 请看我的回答
  • @arnino 我刚刚在我的答案中添加了一些参考,也许它有助于更​​好地理解包在 Python 中的工作方式。感谢您接受我的回答,因为它更清楚。

标签: python import module python-module


【解决方案1】:

正如 PCM 所指出的,您必须在每个文件夹中创建一个空的 __init__.py 文件:

module/
├── __init__.py
│
├── util/
│   ├──__init__.py
│   ├── metrics.py
│   └── util.py
│
└── training/
    ├──__init__.py
    ├── pretraining.py
    └── training_step.py

因此,如果在您的 pretraining.py 脚本中您需要使用位于 util/metrics.py 中的函数:

from module.util.metrics import accuracy

一些参考资料:

https://github.com/Pierian-Data/Complete-Python-3-Bootcamp/blob/master/06-Modules%20and%20Packages/Useful_Info_Notebook.ipynb

https://docs.python.org/3/tutorial/modules.html#packages

https://python4astronomers.github.io/installation/packages.html

【讨论】:

    【解决方案2】:

    显然,您正在尝试从另一个文件夹导入。为此,你需要把它做成一个包

    您需要在模块文件夹和子文件夹中保存一个空的__init__.py 文件。 __init__.py 将使其成为一个包,因此您可以使用导入它 from util.metrics import accuracy

    【讨论】:

    • 感谢您的回答,我接受了@mseromenho 的回答,因为它更清楚
    猜你喜欢
    • 1970-01-01
    • 2020-05-18
    • 2022-12-10
    • 2019-12-22
    • 2021-04-20
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    相关资源
    最近更新 更多