从Python2.7 Anaconda环境启动JupyterLab为何报语法错误?
Python 2.7.18环境启动JupyterLab报错解决方法
问题现象
在Anaconda Navigator的Python 3.10.8环境中启动JupyterLab一切正常,但切换到Python 2.7.18环境启动时出现如下错误:
Traceback (most recent call last): File "/home/bioinfguru/anaconda3/envs/python2718/bin/jupyter-notebook", line 7, in from notebook.notebookapp import main File "/home/bioinfguru/anaconda3/envs/python2718/lib/python2.7/site-packages/notebook/__init__.py", line 25, in from .nbextensions import install_nbextension File "/home/bioinfguru/anaconda3/envs/python2718/lib/python2.7/site-packages/notebook/nbextensions.py", line 31, in from .config_manager import BaseJSONConfigManager File "/home/bioinfguru/anaconda3/envs/python2718/lib/python2.7/site-packages/notebook/config_manager.py", line 15, in from traitlets.config import LoggingConfigurable File "/home/bioinfguru/anaconda3/envs/python2718/lib/python2.7/site-packages/traitlets/config/__init__.py", line 6, in from .application import * File "/home/bioinfguru/anaconda3/envs/python2718/lib/python2.7/site-packages/traitlets/config/application.py", line 17, in from decorator import decorator File "/home/bioinfguru/anaconda3/envs/python2718/lib/python2.7/site-packages/decorator.py", line 162 print('Error in generated code:', file=sys.stderr) ^ SyntaxError: invalid syntax
补充说明:不会编写Py2代码,但因预计会遇到Py2依赖提前配置该环境,目前处于探索阶段。
已尝试操作:
- 尝试为JupyterLab添加新内核,但操作不直观,担心破坏现有配置;
- 分析错误信息,对最后一条仅显示"line X"的报错不知如何处理;
- 在终端确认当前环境使用Python 2.7.18:
bioinfguru@bioinfguru-Legion-5-15IAH7H:~$ python -V Python 2.7.18 :: Anaconda, Inc.
问题原因
报错行的print('Error in generated code:', file=sys.stderr)是Python 3专属语法,Python 2中print是语句而非函数,不支持这种带file参数的写法。这说明当前Python 2.7环境中安装的decorator版本过高,已不再兼容Python 2.7。
解决步骤
- 激活Python 2.7.18环境:
conda activate python2718 - 卸载当前不兼容的decorator包:
pip uninstall decorator -y - 安装支持Python 2.7的decorator版本(推荐4.4.2,为最后兼容Py2的版本):
pip install decorator==4.4.2 - 重新启动JupyterLab即可解决问题。
额外建议
若后续需在JupyterLab中使用Python 2.7内核,更稳妥的方式是直接添加内核而非在Py2环境启动JupyterLab:
- 确保Py2环境安装
ipykernel:conda install ipykernel -y - 将该环境添加为Jupyter内核:
python -m ipykernel install --user --name python2718 --display-name "Python 2.7.18"
之后在JupyterLab的内核选择菜单中就能找到"Python 2.7.18"选项,避免版本兼容问题。
内容的提问来源于stack exchange,提问作者bioinfguru
相关产品推荐
相关产品推荐

