我正在使用Windows上的CNN,Keras和Tensorflow后端创建叶标识分类器。我已经安装了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'
为什么找不到该模块,如何解决该错误?
答案 0 :(得分:2)
安装Anaconda,然后安装带有点缝的软件包,例如混淆Anaconda(或任何其他软件包管理工具)的目标
Anaconda可以帮助您组织环境及其依赖性。
假设系统路径上有conda,请执行以下操作:
更新conda
conda update conda
我们可以使用python 3.6创建一个名为“ awesome”的环境,并添加anaconda(numpy,scipy,jupyter笔记本/实验室等)以及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等可以帮助您更好地管理系统;)
答案 1 :(得分:1)
听起来好像您在计算机上安装了多个python时已使用pip3进行安装。
在安装Anaconda之前,您是否刚在计算机上安装了python?有时,PATH变量中的pip3与Anaconda的版本不同。
尝试一下,然后再次运行代码:
conda install keras
运行conda列表以查看它是否已安装在Anaconda python安装中:
conda list
如果仍然无法正常运行,请尝试以下操作:
\path\to\Anaconda\python\python3 -m pip3 install keras
这使用pip3,但确保在安装keras时选择正确的安装。
答案 2 :(得分:0)
它帮助我首先在命令行上检查是否确实安装了Keras,如此处先前的回答所述。
python -c "import keras"
如果该命令出错,则可能是您没有在正确的环境中安装keras。
经过多种解决方案后,我仍然遇到错误。原来,我不得不重新启动jupyter笔记本才能使更改生效-以防万一您正在使用笔记本。
答案 3 :(得分:0)
我也遇到了同样的情况。我卸载了 keras,然后重新安装了特定版本,并且成功了。
pip uninstall keras
那么这个 -->
pip install keras==2.2.4
答案 4 :(得分:0)
确保您使用的 pip 实例连接到您使用的同一个 python 实例。由于我的机器上有多个 python 安装,我通过直接使用我想要的 python 版本中的 pip 模块来避免它们之间的混淆,而不是使用 pip
:
python3 -m pip install keras
python3 -c "import keras" // <-- should execute without an error