web-dev-qa-db-fra.com

ipython3 ne fonctionne pas dans le terminal avec python3.7

J'ai récemment mis à niveau Python3.6 vers Python3.7. Depuis que j'ai mis à niveau, quand je tape ipython3 dans le terminal, j'obtiens une erreur:

~$ 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

De plus, j'ai remarqué que mon cahier jupyter ne semble plus fonctionner avec le noyau python3 maintenant (j'obtiens l'erreur morte du noyau).

Remarques:

  • ipython et jupyter-notebook fonctionnent très bien lorsque je les utilise avec Python2.
  • J'utilise Ubuntu 18.04 (Bionic Beaver) bien que je ne pense pas que ce soit pertinent
12
piccolo

async est un mot réservé dans Python 3.7

Vous pouvez modifier les packages vous-même si vous vous sentez à l'aise de le faire. Voici une commande Shell qui fait exactement cela:

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

Sinon, vous voudrez peut-être utiliser Python 3.6 en attendant une mise à jour.

0
Benoît Pilatte

Comme d'autres l'ont noté, avoir la version actuelle du package pexpect devrait résoudre ce problème. Dans mon cas, le python3-pexpect le package que j'avais installé via apt était bloqué sur une ancienne version et je devais d'abord le supprimer. L'installation du package pexpect actuel via pip3 a résolu le problème.

0
Dominik