python - 没有名为 "data_utils"的模块...但已下载

标签 python scipy tensorflow keras recurrent-neural-network

所以,我遇到了一个简单的错误,

"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__.pydata-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/

相关文章:

python - AttributeError:模块“scipy”在sklearn/utils/fixes.py中没有属性“sparse”

python - 从 scipy 导入 softmax 并在从 sklearn 导入后使用它时出现问题

python - 如何在单独的python脚本中使用经过python训练的模型

python - 存储列表字典的问题

python - Skimage - 调整大小功能的奇怪结果

python - 3秒后如何创建线程拍照?

python - 在 Python 中忽略来自第三方包的日志消息

python - 从 Scipy 稀疏矩阵中获取唯一行

python - 如何理解此代码中卷积神经网络的输入图像

python - 如何存储 CNN 提取的特征来训练 SVM 分类器