我正在跟踪这个tensorflow tutorial,经过两天的环境设置,我终于可以使用cmd运行premade_estimator.py
了
但是当我尝试在jupyter笔记本中运行相同的代码时,我得到了这个错误:
usage: ipykernel_launcher.py [-h] [--batch_size BATCH_SIZE]
[--train_steps TRAIN_STEPS]
ipykernel_launcher.py: error: unrecognized arguments: -f C:\Users\david\AppData\Roaming\jupyter\runtime\kernel-4faecb24-6e87-40b4-bf15-5d24520d7130.json
发生异常,请使用%tb查看完整的追溯。
SystemExit: 2
C:\Anaconda3\envs\python3x\lib\site-packages\IPython\core\interactiveshell.py:2918:
UserWarning: To exit: use 'exit', 'quit', or Ctrl-D. warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
我已尝试使用以下方法修复此问题,但未成功:
pip install --ignore-installed --upgrade jupyter
pip install ipykernel
python -m ipykernel install
conda install notebook ipykernel
ipython kernelspec install-self
任何想法将不胜感激!谢谢!
8条答案
按热度按时间t98cgbkg1#
更优雅的解决方案是:
代替
jei2mxaa2#
我明白了!我们得到这个错误的原因是因为这个代码使用的是
argparse
,而这个模块是用来编写用户友好的命令行界面的,所以看起来,它与Jupyter Notebook有冲突。我在这个page中找到了解决方案:
我们要做的是:
删除或注解以下行:
并替换
args
对于以这种方式使用库
easydict
的字典:使用
easydict
,我们可以访问作为参数属性的dict值。经过这一年对python的深入研究,我发现这个问题的解决方案要简单得多(我们不需要使用任何外部库或方法)。
argparse
只是python中从终端向脚本传递参数的众多方法之一。当我尝试在jupyter笔记本上这样做时,显然行不通。我们可以直接在函数中替换参数,如:现在,如果函数的参数列表很长,可以使用
*args
或**kargs
。*args
传递一个元组作为函数中的参数,具体来说,对于这种情况,它将是:**kargs
将字典作为参数传递给我们的函数:只要谷歌一下,你就会发现一个关于如何使用它们的非常好的解释,这里有一个documentation,我用来研究这个。
6ljaweal3#
我今天刚遇到这个问题,发现了一个快速而愚蠢的解决方案,就是为qtconsole/ipython传递的
-f
参数插入一个参数处理器,这是我们没有预料到的。我没有使用
-f
参数,所以对我来说没有损失。我宁愿不要仅仅因为ipython突然出现在某台特定计算机的工作流中就重新设计一个更大的参数处理框架...
u5i3ibmn4#
我有这样的问题:
但这是串行导入的库
所以我在我自己的目录中复制文件:第一个月
并编辑添加:
就像 * pauljohn 32 *(https://stackoverflow.com/users/1086346/pauljohn32)一样!
现在正在本地使用新文件:
它工作正常!
qacovj5a5#
here建议的另一个解决方案是向
parse_args
方法传递空字符串。例如:
上面的解决方案实际上在google colab中有效。
vjhs03f76#
您是否尝试过:
gorkyyrv7#
我收到了更多“无法识别的参数”的错误:第一个月
对于每个无法识别的参数(例如ip、stdin、control...),我添加了一行,以便将参数添加到ArgParser中(如@pauljohn32所建议的):
iqxoj9l98#
因为这段代码使用的是argparse,而这个模块是用来写用户友好的命令行界面的,所以看起来和Jupyter Notebook有冲突。
原因如上所述,但我认为将args转换为class比像@virtualdvid和@Hrvoje那样命令要好