簡體   English   中英

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 內核(我得到內核死錯誤)。

筆記:

  • 當我將它們與 Python2 一起使用時,ipython 和 jupyter-notebook 運行良好。
  • 我正在使用 Ubuntu 18.04 (Bionic Beaver),盡管我認為這無關緊要

async是 python3.7 中的保留關鍵字,舊版本的 pexpect 使用async作為變量。 解決方案是升級 pexpect。

對我來說,它與 apt-get 安裝的 python3 沖突,所以我必須先卸載它/它們:

sudo apt-get remove python-pexpect python3-pexpect

進而

sudo pip3.7 install --upgrade pexpect

更新請更新您安裝的軟件包。 pexpect此錯誤已報告並已關閉問題


在 Python 3.7 中, asyncawait現在是保留關鍵字。 這就是破壞某些已安裝軟件包的原因。

如果您不需要 3.7 中的新功能,請回滾到 3.6 並等待您的包更新以支持 3.7 中的新語法

Python 3.7 中的新功能

我只是通過手動升級 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包解決了這個問題。

asyncPython 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 中的關鍵字相關的問題

如此處所示,更新pipenv可能是解決方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM