关于Jupyter Notebook无法自动补全(Autocompletion),报错TypeError: __init__() got an unexpected keyword argument 'column' 的解决方案

问题描述:

最近在linux服务器上装了jupyter notebook希望远程访问使用,安装完成后发现notebook的TAB自动补全功能不能用。这是一件很难受的事情,python这么多库的用法不可能一一记住,所以必须解决这个问题。

在谷歌百度上寻求解决方案,发现很多文章提到安装nbextensions插件,但很遗憾,我尝试之后发现这个方法无法解决问题。

最后我在pycharm上运行jupyter的时候发现了问题的根源。当在pycharm中输入函数名并补全代码时,jupyter的控制台会提示如下的错误(但由于pycharm的强大功能,此时仍然能够完成代码补全):

  1. File "....../lib/python3.6/site-packages/jedi/api/__init__.py", line 726, in __init__
  2. project=Project(Path.cwd()), **kwds)
  3. TypeError: __init__() got an unexpected keyword argument 'column'

于是让我联想到,直接使用jupyter notebook时无法按TAB补全可能也是这个错误导致的。查看服务器上的jupyter日志发现似乎也有这个报错。

最后,在github上ipython项目的issue中找到了解决方法:

https://github.com/ipython/ipython/issues/12740

解决方案:

该问题是ipython版本和jedi版本不符造成的(从错误提示中也能看出来与jedi有关)。

在这种情况下,直接从shell控制台运行ipython也不能使用TAB键补全,按下TAB没有任何反应。

由于ipython 7.19及以下的版本不支持最新的jedi 0.18.0,就会出现错误。查看ipython版本,嗯,版本号7.16.1,那么问题就找到了。

由于我的Python版本是3.6.9,不能升级ipython到7.20以上(需要python3.7以上的版本),只能选择从jedi入手。网上有博客称jupyter使用不需要jedi所以可以直接卸载解决问题,我没有尝试是否可行。我这里选择将jedi降低一个版本(到0.17.0),即可解决问题

  1. pip3 install jedi==0.17.0

完成之后,先试试shell运行ipython,TAB键已经出现代码提示和补全功能。然后打开jupyter notebook,同样能够使用TAB键补全了,问题解决!

关于Jupyter Notebook无法自动补全(Autocompletion),报错TypeError: __init__() got an unexpected keyword argument 'column' 的解决方案的更多相关文章

  1. [转载]Jupyter Notebook中自动补全代码

    原文地址:https://yq.aliyun.com/articles/667928 在公众号之前的文章中,已经介绍了在Jupyter Notebook中设置主题以及输出代码文件到pdf文件中,本文来 ...

  2. jupyter notebook安装/代码补全/支持golang 踩坑记

    安装(不要用root) 安装anaconda3,然后ln -s bin目录下的jupyter命令到/usr/bin目录下 生成密码备用 敲ipython进入交互终端 In [1]: from note ...

  3. jupyter notebook 代码自动补齐插件

    安装: . pip install jupyter_contrib_nbextensions -i https://pypi.mirrors.ustc.edu.cn/simple 2. jupyter ...

  4. 今天我的jupyter notebook打不开了,报错原因'No module named 'zmq.eventloop'

    今天我的jupyter notebook打不开了,就是那种一打开出现黑色界面就退出的那种,惊恐爬上了我的面颊. 找了一个小时,试了好几种办法(包括别人说的什么把属性里面后面的%%的去掉)终究无果 打开 ...

  5. eclipse配置代码自动补全auto-completion

    你如果使用的是JAVA EE的模式,就这样配置: 1. Window>Preferences>Java>Editor>Content Assist>Auto Activa ...

  6. Jupyter Notebook自动补全

    大多数程序员都非常熟悉不同的自动补全工具.然而,我注意到许多数据科学家还没有使用它.如果你是他们中的一员,是时候开始使用这个提高效率的工具了 什么是自动补全? 它是你的编程环境提供的一种功能,用于完成 ...

  7. Jupyter Notebook 设置黑色背景主题、字体大小、代码自动补全

    1.背景主题.字体大小设置 安装Jupyter主题: pip install jupyterthemes 然后,更新Jupyter主题: pip install --upgrade jupyterth ...

  8. jupyter notebook自动补全功能实现

    Jupyter notebook使用默认的自动补全是关掉的.要打开自动补全,需修改默认配置. 命令行中输入:ipython profile create 以上命令会在~/.ipython/profil ...

  9. Jupyter notebook 自动补全

    Jupyter notebook 自动补全   Jupyter notebook使用默认的自动补全是关掉的.要打开自动补全,需修改默认配置.  ipython profile create 以上命令会 ...

随机推荐

  1. 2022届字节跳动校园招聘&内推「【内推码】:4J8CA3W」

     字节跳动2022校园招聘全面启动!8000+Offer来袭,持续内推. 内推时间:2021年8月12日-10月31日 招聘对象:2021年9月-2022年8月期间毕业,且最高学历毕业后无全职工作经验 ...

  2. MySQL — 数据查询语言

    目录 1.基础查询 2.条件查询 3.分组查询 4.排序查询 5.分页查询 6.多表查询 6.1.连接查询 6.1.1.内连接 6.1.2.外连接 6.1.3.自连接 6.1.4.联合查询 6.2.子 ...

  3. Shell 脚本是什么?

    一个 Shell 脚本是一个文本文件,包含一个或多个命令.作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell 脚本)来完成这些日常工作任务.- ...

  4. 使用Pycharm IDE工具,使用input()函数出现>?符号

    Python Console  ===  如果你是要Pycharm开发Python项目时,出现使用input函数,提示 >? 符号的时候,那应该是开启了Python Console控制台输出,取 ...

  5. 使用SpringDataJdbc的@Query注解实现自动映射结果集 ----- RowMapper接口

    使用@Query注解的时候,常常需要写sql来映射非域类的实例,通常的做法就是 实现 RowMapper接口,然后new实例一个一个的设置值进去...为此.出世了自动映射工具类 注意事项:此抽象类只是 ...

  6. Java 进程和线程

    进程和线程 在并发编程中,有两个基本的执行单元:进程和线程.在Java编程语言中,通常并发编程主要与线程有关.但是进程也很重要. 计算机系统通常具有许多活动的进程和线程.即使在只有一个执行核心,因此在 ...

  7. redis 过期键的删除策略?

    1.定时删除:在设置键的过期时间的同时,创建一个定时器 timer). 让定时器在键 的过期时间来临时,立即执行对键的删除操作. 2.惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的 ...

  8. java-可变参数hei

    /* 使用前提: 当前方法的参数的数据类型已经确定,但是参数的个数不确定,就可以使用可变参数 使用格式: 定义方法是使用 修饰符 返回类型 方法名(数据类型... 变量名){} 可变参数的原理: 可变 ...

  9. 列举 Spring Framework 的优点?

    由于 Spring Frameworks 的分层架构,用户可以自由选择自己需要的组件. Spring Framework 支持 POJO(Plain Old Java Object) 编程,从而具备持 ...

  10. js技术之如何在JS中获取input的值

    在JavaScript中获取input元素value的值: 方法一:var variations_number = $("#input的id名").val(); 1 <!DO ...