MacOS Big Sur下SublimeREPL启动virtualenv环境Python REPL提示符乱码
问题原因
你看到的[?2004h类乱码是终端ANSI控制序列,用于控制终端颜色、光标状态、提示符格式等。SublimeREPL本身不支持解析这类控制字符,而你的虚拟环境默认启动的是IPython/Jupyter控制台,默认会输出大量ANSI控制码,直接被SublimeREPL当作普通文本输出就形成了乱码。
解决方案
方案1:修改IPython配置(不影响虚拟环境其他使用场景)
- 进入你的virtualenv虚拟环境目录,执行以下命令生成默认IPython配置:
ipython profile create - 打开生成的配置文件
~/.ipython/profile_default/ipython_config.py,添加以下配置:
c.TerminalInteractiveShell.simple_prompt = True c.TerminalInteractiveShell.color_info = False c.TerminalInteractiveShell.true_color = False
- 重启SublimeREPL的虚拟环境Python会话即可,IPython会自动输出纯文本格式的提示符,无控制字符乱码。
方案2:修改SublimeREPL配置,强制使用原生Python
- 打开SublimeREPL配置目录下的
config/Python/Main.sublime-menu,找到Python - virtualenv对应的配置项,修改为:
{ "command": "repl_open", "caption": "Python - virtualenv", "id": "python_virtualenv_repl", "args": { "type": "subprocess", "encoding": "utf8", "cmd": ["python", "-i"], "cwd": "$folder", "extend_env": {"VIRTUAL_ENV": "$folder", "PATH": "$folder/bin:$PATH"} } }
- 保存后重启Sublime,后续启动虚拟环境REPL会直接调用原生交互式Python,绕过IPython,完全不会出现控制字符乱码。
方案3:临时修复当前会话
如果不想修改配置,每次启动虚拟环境REPL后,先执行以下命令关闭IPython的高级提示符:%simple_prompt
执行后当前会话的提示符就会恢复正常,无需重启。
内容的提问来源于stack exchange,提问作者jas0n
相关产品推荐
相关产品推荐

