web-dev-qa-db-ja.com

ipython3が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(Bionic Beaver)を使用していますが、これは関係ないと思います
12
piccolo

asyncPython 3.7の予約語です

気になっている場合は、自分でパッケージを編集できます。これを行うシェルコマンドを次に示します。

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を使用することをお勧めします。

0
Benoît Pilatte

他の人が指摘したように、現在のバージョンのpexpectパッケージを使用すると、これを解決できます。私の場合、python3-pexpect aptを使用してインストールしたパッケージが古いバージョンでスタックし、最初にそれを削除する必要がありました。次に、pip3を使用して現在のpexpectパッケージをインストールすると、問題が修正されました。

0
Dominik