所以,我遇到了一个简单的错误,
"No module named "data_utils"
当尝试将其导入 python 程序时。所以我认为它一定没有下载并花了大约 20 分钟试图确保正确下载。事实证明,一切都很好,data_utils.py
文件位于 utils 文件夹中。
我真的很困惑,因为我看到它就在那里,但它根本无法导入。我在 __init__.py
文件后查找了 .bin,但看起来它们没问题。任何帮助将不胜感激。谢谢!
最佳答案
根据您的评论推断答案是:
这些文件必须位于同一目录/和某个子目录中才能导入,例如 import data_utils
去工作。
有一些方法可以解决这个问题,但首先要尝试保持简单。
例如:
给定一个像这样的目录结构:
| --main.py
| --data_utils.py
| --train.py
假设你有一个函数 remove_punctuation
在 data_utils 中:
您可以使用导入:
from data_utils import remove_punctuation
或者您可以使用以下方式导入所有函数(和/或 data_utils 中的类):
from data_utils import *
或者您可以使用以下方式导入 data_utils
import data_utils
# use remove_punctuation
data_utils.remove punctuation
目录结构也可以是:
|--main.py
|--bar
|--foo
|--src
|--train.py
您可以使用导入remove_punctuation
与上面使用点表示法限定目录的语义相同:
from bar.foo import foo
编辑:像 scipy 这样的模块导入必须位于同一目录中吗?
简短回答 没有
长答案:
当您安装scipy
时和numpy
等(您从 pip 或使用 sudo 安装的软件包)它们将自己(它们的位置)添加到 PYTHONPATH
因此您不必将它们与项目代码放在同一目录中。
您想要全局使用的模块必须添加到您的 PYTHONPATH 中。 Python 在其正在执行的文件的目录和子目录以及 PYTHONPATH
中(粗略地)搜索模块。 .
如果您想全局导入您自己的模块
即,如果您想使用 data_utils.py
假设您在 linux 上使用 bash 并假设您在名为 data-utils
的目录中有 data_utils.py ,那么您可以做的任何事情:
添加__init__.py
至data-utils
,所以你的目录结构将如下所示:
|--data-utils
|--__init__.py
|--data_utils.py
然后将此行添加到您的 ~/.bashrc 中:
export PYTYHONPATH=$PYTHONPATH:/path/to/data-utils
data-utils
(并通过扩展 data_utils.py
)永久添加到 PYTHONPATH
并且可以通过任何项目代码导入。
关于python - 没有名为 "data_utils"的模块...但已下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42867864/