Keras破坏了Anaconda Prompt

10

我正在从TensorFlow切换到Anaconda发行版上的Keras,并且在后者方面遇到了一些问题。我使用Anaconda命令提示符安装它,命令如下:

我用Anaconda prompt命令行安装keras时出现了错误,我该怎么办?

conda install keras

我认为安装过程没有完全完成,因为它运行了该命令。

python -c "import keras"  1>nul 2>&1

然后关闭提示符。之后,如果我要打开命令行,它会自动运行上述命令并将其关闭,因此我无法使用提示符。这在Anaconda 5.3.1(Python 3.7)和Anaconda 5.2.0(Python 3.6)中都发生过。

非常感谢您的帮助,任何帮助都将不胜感激。


Keras使用像TensorFlow或Theano这样的后端,你用哪一个? - Geeocode
我正在使用Tensorflow @Geeocode - Ahab
2
由于TensorFlow更喜欢在Anaconda环境中通过pip安装,因此您应该尝试使用pip安装tf和Keras。我使用了这种方法,效果非常好。实际上,您不是第一个遇到使用conda安装tf和Keras的困难的人。我会尽可能使用conda安装任何可行的应用程序,但tf和Keras不是这样的应用程序。但重要的是:使用Anaconda虚拟环境,并在其中使用pip! - Geeocode
请参考此链接。使用这个答案,您将能够再次运行Anaconda提示符并做任何您想做的事情:https://dev59.com/_7Dla4cB1Zd3GeqP2hJz#54237245 - Muser
在我的情况下,遵循amanrs在此github问题中给出的答案解决了这个问题。 - Javier TG
9个回答

8

我结合了GAURAV和GYAN ARORA的答案后找到了答案。解决方案如下:

1)转到%UserProfile%Anaconda3/etc/conda/activate.d并右键单击keras_activate.bat 2)点击编辑。 这是.bat文件的内容:

:: Figure out the default Keras backend by reading the config file.
python %CONDA_PREFIX%\etc\keras\load_config.py > temp.txt
set /p KERAS_BACKEND=<temp.txt
del temp.txt

:: Try to use the default Keras backend.
:: Fallback to Theano if it fails (Theano always works).
python -c "import keras" 1>nul 2>&1
if errorlevel 1 (
    ver > nul
    set "KERAS_BACKEND=theano"
    python -c "import keras" 1>nul 2>&1
)

将两个1>nul替换为1>。 最终文件应该如下所示:

:: Figure out the default Keras backend by reading the config file.
python %CONDA_PREFIX%\etc\keras\load_config.py > temp.txt
set /p KERAS_BACKEND=<temp.txt
del temp.txt

:: Try to use the default Keras backend.
:: Fallback to Theano if it fails (Theano always works).
python -c "import keras" 1> 2>&1
if errorlevel 1 (
    ver > nul
    set "KERAS_BACKEND=theano"
    python -c "import keras" 1> 2>&1
)

3) 保存并关闭


2
实际上,最好完全删除 1> nul。上面建议的批处理代码 1> 2>&1 不是有效的语法,会导致错误消息“此时不应出现 2>&1”。原始批处理代码试图抑制命令的所有输出(即通过将 stdout 重定向到 nul 并将 stderr 重定向到 stdout),但由于某种原因,Anaconda Prompt 不喜欢/支持 nul,因此它会抛出错误并退出。但是,只需删除 nul,就会创建不正确的批处理代码。 - stepthom
1>nul 2>&1 将标准错误和标准输出打印到单个文件中(此处为 NUL)。请参阅此处以获取详细说明 - Shijith

7

我尝试了几乎所有解决方法来解决这个问题(最初从activate.d中删除“nul”似乎有效,但与包相关的conda命令仍会导致提示崩溃)。所以这就是我所做的。问题似乎源于conda安装keras的方式。

1)使用pip卸载keras using pip。使用Anaconda安装文件夹中的Scripts文件夹。

2)手动删除Keras的每个剩余文件夹。它们大部分位于Anaconda安装文件夹中。不要忘记删除activate.d和deactivate.d文件夹中的keras_activate.bat和keras_deactive.bat文件。

3)使用pip安装keras。

4)这解决了activate.d问题。然而,Anaconda提示仍会因位于%UserProfile%Anaconda3 / etc / conda文件夹中的其他文件而崩溃,该文件名为vs2015_compiler_vars.bat。删除该文件,一切都将正常工作(在使用Keras时出现的奇怪错误消息也将消失)。

P.S. 我多做了一步来完美运行Anaconda Prompt,但我不知道它是否与安装Keras有关(这就是为什么我没有在答案中包含它的原因)。由于conda命令卡在“解决环境”阶段,我启用了严格的渠道优先级,使用conda config --set channel_priority strict。现在Anaconda完全可用!


1
我遇到了同样的问题,花了两天时间最终解决了,并重新安装了很多次。这个消息来自以下文件:%UserProfile%Anaconda3/etc/conda/activate.d/keras_activate.bat. 这个文件中编写的代码存在一些问题,每次都会关闭Anaconda提示符。我不知道如何解决它,也许别人可以提出建议,但在提示窗口上仍然可以执行一些必要的任务的方法是->右键单击上述文件并选择编辑->在文件顶部编写您的Anaconda提示符命令。(它将被执行,然后关闭。)

1
在.bat文件的下面一行中,nul会导致问题并关闭终端,请移除nul以解决此问题。因此,请更改为:
python -c "import keras" 1>nul 2>&1

到这里

python -c "import keras" 1> 2>&1

0

我找到的最佳解决方案是:

1.首先卸载Keras。

2.前往以下位置:C:\Users\username\AppData\Local\Continuum\anaconda3\etc\conda\activate.d

你会在activate.ddeactivate.d中看到keras批处理文件,这些文件在每次打开anaconda提示符时都会运行。请删除它们。

3.重新安装Keras。

这对我很有效。


0

"> 将两个 1>nul 改为 1>" - 对我没有用...

但这个方法解决了问题:

  1. 卸载 Keras pip uninstall keras
  2. 前往 C:\Users\<username>\anaconda3\etc\conda 并删除这些文件夹中的所有文件
  3. 安装 Keras pip install keras

0

我以管理员权限执行Anaconda提示符并删除/重新安装Keras。问题随即得到解决。

但是它仍然给我Theano后端,我需要手动更改它。


0

只需执行以下命令: pip unistall keras

然后从 C:\ProgramData\Anaconda3\etc\conda\中删除activate.d和deactivate.d文件夹

最后重新打开Anaconda提示符


0

我有同样的问题。我没有找到一个永久性的解决方法,但在脚本运行结束之前,你可以使用ctrl+d来中断它,然后你就可以做任何想做的事情了。


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