5

On attempting to launch Jupyter on Python 3.7, I observe the following:

$ 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

I've installed python3.7-distutils (which appears to feature pexpect) and I've reinstalled Jupyter using pip3, yet I still see this error. I've also uninstalled and reinstalled the following packages:

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

What should be done?

I see reference to this fix but, assuming it is a fix, don't know how to get it up and running on this 16.04 LTS install.


EDIT: On importing pexpect in Python 3.7, I get the same sort of thing:

>>> 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
    Does python3.7 -c 'import pexpect' succeed? – wjandrea Jan 4 '19 at 15:25
  • @wjandrea Hey there, when I import pexpect in Python 3.7 I do get the same sort of error, and I've added the terminal output to the question. As I've linked in the question, it looks like something has been done to attempt to address this bug, which may arise because of changes in Python 3.7. Do you know how the current version of pexpect, or more generally distutils, can be installed in Ubuntu 16.04 LTS safely? – BlandCorporation Jan 4 '19 at 17:00
  • 1
    Yes, the issue is occurring because async was added as a reserved keyword in Python 3.7. When you import pexpect, it's importing the module written for Python 3.5 (which is the system version - /usr/lib/python3 is the system Python 3 library). – wjandrea Jan 4 '19 at 17:14
  • 1
    How did you install python3.7 and python3.7-distutils? – wjandrea Jan 4 '19 at 17:17
  • @wjandrea Thanks for your thoughts on this. I installed Python 3.7 and distutils for Python 3.7 in the following way: sudo apt install python3.7 python3.7-dev python3.7-distutils python3.7-tk (I've tried removing these packages and reinstalling them a few times now also). – BlandCorporation Jan 4 '19 at 20:59
9

For me, it was conflicting with apt-get installed python3, so I had to first uninstall it/them:

sudo apt-get remove python-pexpect python3-pexpect

And then

sudo pip3.7 install --upgrade pexpect

  • Worked for me as well. Thanks :) – Vedprakash Upraity Oct 31 '19 at 10:05
  • This saved me. Thanks! (I'm using Python 3.8.0) – igorkf May 11 '20 at 0:14
1

Download pexpect4.6 source code from https://github.com/pexpect/pexpect/releases/tag/4.6

Extract the source code, get into the folder and install the pexpect by:

sudo python3.7 setup.py install

This should solve your problem. :)

0

I was getting the same error. I've tried to:

python3.7 -c 'import pexpect'

And I got:

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

After that I tried:

pip3 install pexpect

Now jupyter works just fine.

0

I had the same problem and the following steps worked for me.

I went to /usrlib/python3/dist-packages/pexpect/ and there I

  • renamed async.py to _async.py
  • opened spawn.py and made these replacements:
    'async=' -> 'async_='
    'async:'-> 'async_:'
    '.async' -> '._async'
    

Hope it helps someone else, too.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.