Con un recente aggiornamento, sto riscontrando un problema serio con SyntaxError: invalid syntax
quando si avvia un'istanza python2.7 del notebook con $ ipython2 notebook
.Ottenere "SyntaxError: sintassi non valida" con il notebook ipython2
L'errore sembra originare tramite tornado
che utilizza ayncio
e in quella libreria è presente la sintassi python3.4.
Posso iniziare con $ ipython3 notebook
, ma l'applicazione che sto facendo utilizza mayavi
che credo sia ancora solo per python2.
Il messaggio di errore è brutto:
$ ipython2 notebook
Traceback (most recent call last):
File "/usr/local/bin/ipython2", line 11, in <module>
sys.exit(start_ipython())
File "/usr/local/lib/python2.7/dist-packages/IPython/__init__.py", line 118, in start_ipython
return launch_new_instance(argv=argv, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/traitlets/config/application.py", line 591, in launch_instance
app.initialize(argv)
File "<string>", line 2, in initialize
File "/usr/local/lib/python2.7/dist-packages/traitlets/config/application.py", line 75, in catch_config_error
return method(app, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/IPython/terminal/ipapp.py", line 305, in initialize
super(TerminalIPythonApp, self).initialize(argv)
File "<string>", line 2, in initialize
File "/usr/local/lib/python2.7/dist-packages/traitlets/config/application.py", line 75, in catch_config_error
return method(app, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/IPython/core/application.py", line 386, in initialize
self.parse_command_line(argv)
File "/usr/local/lib/python2.7/dist-packages/IPython/terminal/ipapp.py", line 300, in parse_command_line
return super(TerminalIPythonApp, self).parse_command_line(argv)
File "<string>", line 2, in parse_command_line
File "/usr/local/lib/python2.7/dist-packages/traitlets/config/application.py", line 75, in catch_config_error
return method(app, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/traitlets/config/application.py", line 487, in parse_command_line
return self.initialize_subcommand(subc, subargv)
File "<string>", line 2, in initialize_subcommand
File "/usr/local/lib/python2.7/dist-packages/traitlets/config/application.py", line 75, in catch_config_error
return method(app, *args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/traitlets/config/application.py", line 418, in initialize_subcommand
subapp = import_item(subapp)
File "/usr/local/lib/python2.7/dist-packages/ipython_genutils/importstring.py", line 31, in import_item
module = __import__(package, fromlist=[obj])
File "/usr/local/lib/python2.7/dist-packages/notebook/notebookapp.py", line 48, in <module>
from tornado import httpserver
File "/usr/local/lib/python2.7/dist-packages/tornado/httpserver.py", line 34, in <module>
from tornado.http1connection import HTTP1ServerConnection, HTTP1ConnectionParameters
File "/usr/local/lib/python2.7/dist-packages/tornado/http1connection.py", line 28, in <module>
from tornado import gen
File "/usr/local/lib/python2.7/dist-packages/tornado/gen.py", line 1236, in <module>
import tornado.platform.asyncio
File "/usr/local/lib/python2.7/dist-packages/tornado/platform/asyncio.py", line 33, in <module>
import asyncio
File "/usr/local/lib/python2.7/dist-packages/asyncio/__init__.py", line 9, in <module>
from . import selectors
File "/usr/local/lib/python2.7/dist-packages/asyncio/selectors.py", line 39
"{!r}".format(fileobj)) from None
^
SyntaxError: invalid syntax
Cosa avrebbe aiutato nel mio sitation? Downgrade al tornado? C'è qualcosa di sbagliato nella mia configurazione. Perché è possibile installare asyncio sotto python2.7?
La prego di aprire un bug report sul progetto Tornado? Se questo è un problema abbastanza comune, una patch per Tornado potrebbe supportare sia Python 2.7 che 3.x. –
Tornado supporta sia Python 2.7 che 3.x. AFAIU (vedi la mia risposta sotto). La mia comprensione ora è che si trattava di un problema con requisiti specifici del mio sistema (ad esempio il mio errore) o da qualche altra parte. Leggendo https://github.com/tornadoweb/tornado/blob/master/setup.py Non vedo come sono inclusi asyncio/trollius. Mi chiedo se si tratti di una questione di tornado. –