这是我当前的目录结构,我正在尝试将函数从 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
文件以使它们成为模块,但问题仍然存在。
答案 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 路径。