使用pip3安装了Keras,但出现“没有名为keras的模块”错误。

3
我正在使用CNN、Keras和Tensorflow后端在Windows上创建一个叶子识别分类器。我已经安装了Anaconda、Tensorflow、numpy、scipy和keras。
我使用pip3安装了Keras:
C:\> pip3 list | grep -i keras
Keras               2.2.4
Keras-Applications  1.0.6
Keras-Preprocessing 1.0.5

然而,当我运行我的项目时,出现以下错误。
ModuleNotFoundError: No module named 'keras'

为什么会出现"模块未找到"的错误,并且如何修复这个错误?

你们两个解决方案中有一个可行吗? - Daniel Scott
5个回答

6

安装Anaconda并使用pip安装软件包似乎违背了Anaconda(或任何其他软件包管理工具)的目标。

Anaconda旨在帮助您组织环境及其依赖项。

假设您的系统路径中有conda,请执行以下操作:

更新conda

conda update conda

我们可以使用Python 3.6创建一个名为“awesome”的环境,并添加随Anaconda捆绑的所有出色的数据科学包(如NumPy、SciPy、Jupyter Notebook/Lab等)以及TensorFlow和Keras。如果需要,您可以删除Anaconda并获得最小的软件包。
conda create -n awesome python=3.6 anaconda tensorflow keras

一段时间过去了,一切都很好。现在激活您的环境并测试我们是否可以导入Keras。

conda activate awesome
python -c "import keras"

完成所有操作后,你可以按如下方式停用:
conda deactivate

conda比pip更好,因为它处理库的兼容性。它可以为您升级和降级软件包。

安装Anaconda的美妙之处在于您只需安装主要软件包,它就会为您安装所有依赖项,因此您只需要执行以下操作:

conda create -n awesome python=3.6 keras

这将自动查找keras所依赖的所有软件包,或者设置为默认值,如tensorflow和numpy。

你做错了什么:
你会收到该错误,因为你的python sys.path无法定位你安装的软件包。

你可以执行以下操作:

python -c "import sys;print(sys.path)"

这将打印出您的Python查找软件包的位置。很可能keras库的路径不在其中。
当您使用pip安装时,具有该pip的默认Python将可以访问您的安装。因此,如果您有多个Python,则建议显式指定,例如:
python3 -m pip install packages 

所以,您可以确信安装的是Python3目录中的Python。在这种情况下,我们需要环境来保持Python版本和依赖项的不同,并且易于控制。Anaconda、Pipenv、Poetry、piptools等工具旨在帮助您更好地管理系统;)
更新:对于Jupyter Notebook/Lab用户
如果您已经拥有Jupyter,例如在基本环境中,我们可以添加awesome作为另一个内核:
conda activate awesome 
(awesome ) conda install ipykernel -y
(awesome) python -m ipykernel install --user --name my_env --display-name "Awesome"
conda deactivate

现在,如果您运行Jupyter,您应该能够在基本Python和Awesome环境之间进行选择。

1
我通过这种优雅的方法解决了我遇到的conda问题(condaupgradeerror)。非常感谢。 - Regi Mathew
1
按照这些指示,我创建了名为“awesome”的虚拟环境,并在其中安装了Python 3.6、TensorFlow和Keras。随后,我列出了该环境中加载的所有软件包,并验证了TensorFlow和Keras都已经安装在其中。然而,在尝试在Jupyter笔记本中导入TensorFlow和Keras时,它返回了错误“no module name ...”。我的问题可能是什么? - efueyo
你的Jupyter无法访问你的优秀环境。请更新Jupyter部分的答案。 - Prayson W. Daniel

2

首先,我需要在命令行中检查Keras是否已经安装,就像之前的一个回答中所提到的一样。这将有助于解决问题。

"Original Answer"的翻译是"最初的回答"。

python -c "import keras"

如果您用这个命令出现错误,可能是您没有在正确的环境中安装keras。
经过多种尝试,我仍然遇到了错误。事实证明,我必须重新启动jupyter笔记本才能使更改生效-以防您正在使用笔记本。
"最初的回答"

2

听起来好像你在机器上安装了多个Python版本,使用pip3进行了安装。

在安装Anaconda之前,你是否在机器上安装了Python?有时候,PATH变量中的pip3版本与Anaconda中的不同。

尝试以下操作,然后再次运行代码:

conda install keras

运行conda list命令来查看它是否已安装在Anaconda Python中:

conda list

更新

如果仍然无法正常工作,请尝试以下方法:

\path\to\Anaconda\python\python3 -m pip3 install keras

这里使用pip3,但是确保在安装keras时选择正确的安装版本。


是的,我在安装Anaconda之前已经在我的电脑上安装了Python。我尝试了你的代码,但仍然无法正常工作。 - ABCD
1
@kajasumanie kanapathipillai 我相信这是相关的。如果您得到的堆栈跟踪与“ModuleNotFoundError: No module named 'keras'”不同,请在此处粘贴它。并且请检查当您尝试在shell中运行“conda list”时是否有输出。 - Daniel Scott
模块未找到错误:没有名为'keras'的模块。 - ABCD
@kajasumanie kanapathipillai,当您在控制台中尝试“conda list”时,您是否在列表中看到它了? - Daniel Scott
1
@kajasumanie kanapathipillai 看看我刚刚对解决方案所做的更新。试一下并告诉我它的效果如何。我相信它会适用于你的情况。 :) - Daniel Scott

0

我也遇到了同样的问题。我卸载了Keras,然后重新安装了一个特定版本,问题得到了解决。

pip uninstall keras

然后这样 -->

pip install keras==2.2.4

0

确保你使用的 pip 实例连接到相同的 python 实例。由于我的计算机上有多个 Python 安装程序,我避免混淆它们,直接使用我想要的 Python 版本中的 pip 模块,而不是使用 pip

python3 -m pip install keras
python3 -c "import keras" // <-- should execute without an error

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接