繁体   English   中英

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

[英]Python module not found even though module was created

这是我当前的目录结构,我试图从src/helpers/log.py导入一个函数到src/data/download_dataset.py 我已经遵循了这个答案,但它仍然不起作用。

|-- 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

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

from helpers.log import log_error

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

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

例子:

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM