ipython3 在带有 python3 的终端中不起作用。7
ipython3 does not work in the terminal with python3.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>
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
此外,我注意到我的 jupyter-notebook 现在似乎也无法与 python3 内核一起使用(我收到内核死机错误)。
注意:
当我将 - ipython 和 jupyter-notebook 与 Python2.
一起使用时,它们工作正常
- 我正在使用 Ubuntu 18.04(仿生海狸),尽管我认为这不相关
更新请更新您安装的软件包。
pexpect
的此错误已报告并已关闭 issue
在Python 3.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。
这似乎是与 async
在 Python 3.7
中作为关键字相关的问题
鉴于 here,更新 pipenv
可能是解决方案
我只是通过手动升级pexpect解决了这个问题。
从https://github.com/pexpect/pexpect/releases/tag/4.6
下载pexpect4.6源代码
提取源代码,进入文件夹并通过以下方式安装 pexpect:
sudo python3.7 setup.py install
正如其他人所指出的,拥有当前版本的 pexpect
包应该可以解决这个问题。就我而言,我通过 apt 安装的 python3-pexpect
软件包卡在旧版本上,我首先必须将其删除。然后通过 pip3 安装当前的 pexpect
包解决了这个问题。
async
是 python3.7 中的保留关键字,旧版本的 pexpect 使用 async
作为变量。解决方案是升级pexpect。
对我来说,它与 apt-get 安装 python3 冲突,所以我必须先卸载 it/them:
sudo apt-get remove python-pexpect python3-pexpect
然后
sudo pip3.7 install --upgrade pexpect
我最近从 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
此外,我注意到我的 jupyter-notebook 现在似乎也无法与 python3 内核一起使用(我收到内核死机错误)。
注意:
-
当我将
- ipython 和 jupyter-notebook 与 Python2. 一起使用时,它们工作正常
- 我正在使用 Ubuntu 18.04(仿生海狸),尽管我认为这不相关
更新请更新您安装的软件包。
pexpect
的此错误已报告并已关闭 issue
在Python 3.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。
这似乎是与 async
在 Python 3.7
鉴于 here,更新 pipenv
可能是解决方案
我只是通过手动升级pexpect解决了这个问题。
从https://github.com/pexpect/pexpect/releases/tag/4.6
下载pexpect4.6源代码提取源代码,进入文件夹并通过以下方式安装 pexpect:
sudo python3.7 setup.py install
正如其他人所指出的,拥有当前版本的 pexpect
包应该可以解决这个问题。就我而言,我通过 apt 安装的 python3-pexpect
软件包卡在旧版本上,我首先必须将其删除。然后通过 pip3 安装当前的 pexpect
包解决了这个问题。
async
是 python3.7 中的保留关键字,旧版本的 pexpect 使用 async
作为变量。解决方案是升级pexpect。
对我来说,它与 apt-get 安装 python3 冲突,所以我必须先卸载 it/them:
sudo apt-get remove python-pexpect python3-pexpect
然后
sudo pip3.7 install --upgrade pexpect