Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ipython3在使用python3.7的终端中不起作用_Python_Jupyter Notebook_Ipython_Python 3.7 - Fatal编程技术网

ipython3在使用python3.7的终端中不起作用

ipython3在使用python3.7的终端中不起作用,python,jupyter-notebook,ipython,python-3.7,Python,Jupyter Notebook,Ipython,Python 3.7,我最近从Python3.6升级到了Python3.7。由于我已经升级,当我在终端中键入ipython3时,我得到一个错误: ~$ ipython3 Traceback (most recent call last): File "<string>", line 1, in <module> File "/usr/lib/python3/dist-packages/IPython/__init__.py", line 48, in <module>

我最近从Python3.6升级到了Python3.7。由于我已经升级,当我在终端中键入
ipython3
时,我得到一个错误:

~$ ipython3
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3/dist-packages/IPython/__init__.py", line 48, in <module>
    from .core.application import Application
  File "/usr/lib/python3/dist-packages/IPython/core/application.py", line 25, in <module>
    from IPython.core import release, crashhandler
  File "/usr/lib/python3/dist-packages/IPython/core/crashhandler.py", line 28, in <module>
    from IPython.core import ultratb
  File "/usr/lib/python3/dist-packages/IPython/core/ultratb.py", line 124, in <module>
    from IPython.utils import path as util_path
  File "/usr/lib/python3/dist-packages/IPython/utils/path.py", line 18, in <module>
    from IPython.utils.process import system
  File "/usr/lib/python3/dist-packages/IPython/utils/process.py", line 19, in <module>
    from ._process_posix import system, getoutput, arg_split, check_pid
  File "/usr/lib/python3/dist-packages/IPython/utils/_process_posix.py", line 24, in <module>
    import pexpect
  File "/usr/lib/python3/dist-packages/pexpect/__init__.py", line 75, in <module>
    from .pty_spawn import spawn, spawnu
  File "/usr/lib/python3/dist-packages/pexpect/pty_spawn.py", line 14, in <module>
    from .spawnbase import SpawnBase
  File "/usr/lib/python3/dist-packages/pexpect/spawnbase.py", line 224
    def expect(self, pattern, timeout=-1, searchwindowsize=-1, async=False):
                                                                   ^
SyntaxError: invalid syntax
~$ipython3
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/usr/lib/python3/dist-packages/IPython/_-init__.py”,第48行,在
from.core.application导入应用程序
文件“/usr/lib/python3/dist packages/IPython/core/application.py”,第25行,在
从IPython.core导入版本,crashhandler
文件“/usr/lib/python3/dist-packages/IPython/core/crashhandler.py”,第28行,在
从IPython.core导入ultratb
文件“/usr/lib/python3/dist packages/IPython/core/ultratb.py”,第124行,在
从IPython.utils导入路径为util\u路径
文件“/usr/lib/python3/dist-packages/IPython/utils/path.py”,第18行,在
从IPython.utils.process导入系统
文件“/usr/lib/python3/dist-packages/IPython/utils/process.py”,第19行,在
从.\u进程\u posix导入系统,获取输出,参数拆分,检查pid
文件“/usr/lib/python3/dist packages/IPython/utils/_process_posix.py”,第24行,在
导入预期
文件“/usr/lib/python3/dist-packages/pexpect/_-init__.py”,第75行,在
from.pty_spawn导入spawn,spawnu
文件“/usr/lib/python3/dist packages/pexpect/pty_spawn.py”,第14行,在
from.spawnbase导入spawnbase
文件“/usr/lib/python3/dist-packages/pexpect/spawnbase.py”,第224行
def expect(self、pattern、timeout=-1、searchWindowsSize=-1、async=False):
^
SyntaxError:无效语法
此外,我注意到我的jupyter笔记本现在似乎也不能与python3内核一起工作(我得到了内核死错误)

注:

  • 当我将ipython和jupyter笔记本与Python2一起使用时,它们可以很好地工作
  • 我正在使用Ubuntu18.04(仿生海狸),尽管我认为这与此无关

更新请更新您安装的软件包。 已报告并已关闭
pexpect
的此错误


在Python3.7中,
async
await
现在是保留关键字。这就是破坏某些已安装软件包的原因

如果您不需要3.7中的新功能,请回滚到3.6,并等待软件包更新以支持3.7中的新语法


async
是Python 3.7中的一个保留字

如果你觉得舒服的话,你可以自己编辑软件包。 下面是一个shell命令,它只执行以下操作:

sed "s/async/_async/g" "/usr/lib/python3/dist-packages/pexpect/spawnbase.py" > tmp.txt && cat tmp.txt > "/usr/lib/python3/dist-packages/pexpect/spawnbase.py" && rm tmp.txt

否则,您可能希望在等待更新时使用Python 3.6。

这似乎与Python 3.7中的
async
关键字有关


如前所述,更新
pipenv
可能是解决方案

我只是通过手动升级pexpect来解决这个问题

从下载pexpect4.6源代码

提取源代码,进入文件夹并通过以下方式安装pexpect:


sudo python3.7 setup.py安装

正如其他人所指出的,使用当前版本的
pexpect
软件包应该可以解决这个问题。在我的例子中,我通过apt安装的
python3pexpect
包被卡在了一个旧版本上,我首先必须删除它。然后通过pip3安装当前的
pexpect
包解决了问题。

async
是python3.7中的保留关键字,旧版本的pexpect使用
async
作为变量。解决方案是升级pexpect

对我来说,它与apt get installed python3冲突,因此我必须首先卸载它/它们:

sudo-apt-get-remove-python-pexpect-python3-pexpect

然后


sudopip3.7安装——升级pexpect

我没有使用虚拟环境。无论哪种方式,我都升级了pipenv,但仍然收到相同的错误消息
~$pip3 uninstall pexpect
>
无法卸载'pexpect'。这是一个distutils安装的项目,因此我们无法准确地确定哪些文件属于它,这只会导致部分卸载。
您必须以某种方式将其删除,或者必须返回3.6。如果您真的需要3.7,那么编辑代码并不难。鉴于ipython3需要它,我认为删除
pexpect
是不可取的。OP希望ipython3能正常工作。删除可能会进一步破坏它。这指的是什么包?很抱歉,我对这方面的知识不太了解。在您的错误代码中,接近结尾的地方显示了
文件“/usr/lib/python3/dist packages/pexpect/spawnbase.py”,第224行def expect(self,pattern,timeout=-1,searchwindowsize=-1,async=False):
表示您有一个名为
pexpect
的包,该包正在使用
async
。但在3.7中,async现在是一个保留关键字,就像
import
class
一样,因此它不能再用作变量名。ipython似乎正在使用它,因此卸载它可能会暴露出一些意外的后果。谢谢你,这对我很有用。我没有卸载任何东西,只是安装了$pip3——升级了运行Python3.8的pexpect,jupyter将不会再次启动。pexpect在verion 4.2.1上,现在是4.8.0版