尝试在 Python 3.7 中运行 Jupyter 时出现有关异步的语法错误

尝试在 Python 3.7 中运行 Jupyter 时出现有关异步的语法错误

尝试在 Python 3.7 上启动 Jupyter 时,我观察到以下情况:

$ jupyter notebook
Traceback (most recent call last):
  File "/usr/local/bin/jupyter-notebook", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.7/dist-packages/jupyter_core/application.py", line 266, in launch_instance
    return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/traitlets/config/application.py", line 657, in launch_instance
    app.initialize(argv)
  File "<decorator-gen-7>", line 2, in initialize
  File "/usr/local/lib/python3.7/dist-packages/traitlets/config/application.py", line 87, in catch_config_error
    return method(app, *args, **kwargs)
  File "/usr/local/lib/python3.7/dist-packages/notebook/notebookapp.py", line 1629, in initialize
    self.init_webapp()
  File "/usr/local/lib/python3.7/dist-packages/notebook/notebookapp.py", line 1379, in init_webapp
    self.jinja_environment_options,
  File "/usr/local/lib/python3.7/dist-packages/notebook/notebookapp.py", line 158, in __init__
    default_url, settings_overrides, jinja_env_options)
  File "/usr/local/lib/python3.7/dist-packages/notebook/notebookapp.py", line 270, in init_settings
    nbextensions_path=jupyter_app.nbextensions_path,
  File "/usr/local/lib/python3.7/dist-packages/notebook/notebookapp.py", line 1066, in nbextensions_path
    from IPython.paths import get_ipython_dir
  File "/usr/local/lib/python3.7/dist-packages/IPython/__init__.py", line 54, in <module>
    from .core.application import Application
  File "/usr/local/lib/python3.7/dist-packages/IPython/core/application.py", line 25, in <module>
    from IPython.core import release, crashhandler
  File "/usr/local/lib/python3.7/dist-packages/IPython/core/crashhandler.py", line 27, in <module>
    from IPython.core import ultratb
  File "/usr/local/lib/python3.7/dist-packages/IPython/core/ultratb.py", line 119, in <module>
    from IPython.utils import path as util_path
  File "/usr/local/lib/python3.7/dist-packages/IPython/utils/path.py", line 17, in <module>
    from IPython.utils.process import system
  File "/usr/local/lib/python3.7/dist-packages/IPython/utils/process.py", line 19, in <module>
    from ._process_posix import system, getoutput, arg_split, check_pid
  File "/usr/local/lib/python3.7/dist-packages/IPython/utils/_process_posix.py", line 23, 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 15, in <module>
    from .spawnbase import SpawnBase
  File "/usr/lib/python3/dist-packages/pexpect/spawnbase.py", line 218
    def expect(self, pattern, timeout=-1, searchwindowsize=-1, async=False):
                                                                   ^
SyntaxError: invalid syntax

我已经安装了python3.7-distutils(似乎具有 功能pexpect)并使用 重新安装了 Jupyter pip3,但仍然看到此错误。我还卸载并重新安装了以下软件包:

python3.7 python3.7-dev python3.7-distutils python3.7-tk

应该做什么?

我看到参考此修复但是,假设它是一个修复,不知道如何在这个 16.04 LTS 安装上启动并运行它。


编辑:pexpect在 Python 3.7 中导入时,我得到了同样的结果:

>>> import pexpect
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  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 15, in <module>
    from .spawnbase import SpawnBase
  File "/usr/lib/python3/dist-packages/pexpect/spawnbase.py", line 218
    def expect(self, pattern, timeout=-1, searchwindowsize=-1, async=False):
                                                                   ^
SyntaxError: invalid syntax

答案1

对我来说,它与 apt-get install python3 冲突,所以我必须先卸载它/它们:

sudo apt-get remove python-pexpect python3-pexpect

进而

sudo pip3.7 install --upgrade pexpect

答案2

从以下位置下载 pexpect4.6 源代码https://github.com/pexpect/pexpect/releases/tag/4.6

提取源代码,进入文件夹并通过以下方式安装 pexpect:

sudo python3.7 setup.py install

这应该可以解决你的问题。:)

答案3

我遇到了同样的问题,以下步骤对我有用。

我去了 /usrlib/python3/dist-packages/pexpect/,在那里我

  • 将 async.py 重命名为 _async.py
  • 打开 spawn.py 并进行以下替换:
    'async=' -> 'async_='
    'async:'-> 'async_:'
    '.async' -> '._async'
    

希望它也能帮助其他人。

答案4

我遇到了同样的错误。我尝试过:

python3.7 -c 'import pexpect'

我得到了:

Traceback (most recent call last):   File "<string>", line 1, in <module>   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 Error in sys.excepthook: Traceback (most recent call last):   File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
    from apport.fileutils import likely_packaged, get_recent_crashes   File "/usr/lib/python3/dist-packages/apport/__init__.py", line 5, in <module>
    from apport.report import Report   File "/usr/lib/python3/dist-packages/apport/report.py", line 30, in <module>
    import apport.fileutils   File "/usr/lib/python3/dist-packages/apport/fileutils.py", line 23, in <module>
    from apport.packaging_impl import impl as packaging   File "/usr/lib/python3/dist-packages/apport/packaging_impl.py", line 24, in <module>
    import apt   File "/usr/lib/python3/dist-packages/apt/__init__.py", line 23, in <module>
    import apt_pkg ModuleNotFoundError: No module named 'apt_pkg'

Original exception was: Traceback (most recent call last):   File "<string>", line 1, in <module>   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

之后我尝试:

pip3 install pexpect

现在 jupyter 运行良好。

相关内容