ipython3 не работает в терминале с python3.7 - PullRequest
0 голосов
/ 27 января 2019

Я недавно обновился с 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), хотя я не думаю, что это уместно

Ответы [ 6 ]

0 голосов
/ 02 июля 2019

Для меня это противоречило apt-get, установленному python3, поэтому мне пришлось сначала удалить его / их:

sudo apt-get remove python-pexpect python3-pexpect

А затем

sudo pip3.7 install --upgrade pexpect

0 голосов
/ 14 мая 2019

Как уже отмечалось, наличие текущей версии пакета pexpect должно решить эту проблему.В моем случае пакет python3-pexpect, который я установил через apt, завис на старой версии, и мне сначала пришлось удалить его.Затем установка текущего пакета pexpect через pip3 устранила проблему.

0 голосов
/ 25 февраля 2019

Я просто решил эту проблему, обновив pexpect вручную.

Загрузите исходный код pexpect4.6 из https://github.com/pexpect/pexpect/releases/tag/4.6

Извлеките исходный код, перейдите в папку и установите pexpect:

sudo python3.7 setup.py install

0 голосов
/ 27 января 2019

Похоже, это проблема, связанная с тем, что async является ключевым словом в Python 3.7

Как указано здесь , обновление pipenv может быть решением

0 голосов
/ 27 января 2019

async - зарезервированное слово в Python 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 голосов
/ 27 января 2019

ОБНОВЛЕНИЕ Пожалуйста, обновите установленные пакеты.Об этой ошибке для pexpect уже было сообщено и закрыто проблема


В Python 3.7 async и await теперь являются зарезервированными ключевыми словами.Это то, что нарушает некоторые из ваших установленных пакетов.

Если вам не нужны новые функции в 3.7, откатитесь до 3.6 и дождитесь обновления ваших пакетов для поддержки нового синтаксиса в 3.7

Что нового в Python 3.7

...