即使创建了模块,也找不到 Python 模块

时间:2021-07-20 14:47:07

标签: python

这是我当前的目录结构,我正在尝试将函数从 src/helpers/log.py 导入到 src/data/download_dataset.py。我已关注此 answer 但它仍然不起作用。

|-- AUTHORS.rst
|-- CONTRIBUTING.rst
|-- HISTORY.rst
|-- LICENSE
|-- MANIFEST.in
|-- Makefile
|-- README.rst
|-- data
|   |-- external
|   |-- interim
|   |-- processed
|   `-- raw
|       `-- wine-quality.csv
|-- docs
|   |-- Makefile
|   |-- authors.rst
|   |-- conf.py
|   |-- contributing.rst
|   |-- history.rst
|   |-- index.rst
|   |-- installation.rst
|   |-- make.bat
|   |-- readme.rst
|   `-- usage.rst
|-- dvc_mlflow
|   |-- __init__.py
|   `-- dvc_mlflow.py
|-- logs
|-- models
|-- requirements_dev.txt
|-- setup.cfg
|-- setup.py
|-- src 
|   |-- data
|   |   |-- __init__.py
|   |   `-- download_dataset.py
|   |-- features
|   |   `-- __init__.py
|   |-- helpers
|   |   |-- __init__.py
|   |   `-- log.py
|   `-- models
|       `-- __init__.py
|-- tests
|   |-- __init__.py
|   `-- test_dvc_mlflow.py
`-- tox.ini

我像这样在 log_error 中导入文件 src/data/download_dataset.py

from helpers.log import log_error

但是当我尝试使用 python3 src/data/download_dataset.py 运行文件时,我收到错误 ModuleNotFoundError: No module named 'helpers'。我有点困惑,因为我已经在每个目录中添加了 __init__.py 文件以使它们成为模块,但问题仍然存在。

3 个答案:

答案 0 :(得分:2)

您可以尝试 sys.path.append 方法。无论您想导入什么模块,找到这些模块的路径并将其传递给函数。

示例:

如果我当前的工作目录是 /home/user_name/Desktop/Scripts/Main.py 并且我想导入位于 Factorial.py 的某个文件 /home/user_name/Documents/OtherScripts/,我可以执行以下操作

# Inside your Main.py file
import sys
sys.path.append("/home/user_name/Documents/OtherScripts/")
from Factorial import *

答案 1 :(得分:0)

您正在从项目的根目录运行它,其中只有 src。所以它要么需要是 from src.helpers.log import log_error,要么你需要从 src 目录运行它。

通常,您希望将 src 目录命名为与您的项目相同的名称,因此导入看起来很合乎逻辑。

答案 2 :(得分:0)

我发现了一种更简单的方法,我不必使用 sys.path.append() 附加路径,只需要在命令行中使用 export PYTHONPATH="${PYTHONPATH}:/path/to/your/project/" 设置 python 路径。