python-mode 下的 ipython, 我发现 pip 会安装失败, 报错是 SOCKS5 不支持. 在 ipython 下执行 !echo $ALL_PROXY
, 发现不为空, 这应该就是问题所在. ipython 中执行 !echo $SHELL
, 得到的是 /bin/zsh
, 的确是 zsh.
但是, 奇怪的地方在这里, 我的配置文件很久以前设置过 all_proxy
, 但现在已经没有这个设置了. 并且我在终端 app 中打开一个 zshell, echo $all_proxy
也为空. 因此我觉得与 zsh startup file 无关.
再打开 eshell, 发现 eshell 和 emacs ipython 一样. 也设置了 all_proxy
. 再用 emacs 的 shell 命令打开一个终端, 没有设置 all_proxy
. 因此我怀疑 emacs ipython 的表现与 eshell 有关.
总结一下异常:
ipython 的确用的是 zsh, 但莫名其妙地设置了 all_proxy
. zsh 的 eshell 也有同样的问题, 但是 emacs 的 shell 命令就没有这个问题, 与终端 app 中一致. 因为配置文件中本来就没有设置 all_proxy
.
我进行过的检查:
- 确认 zsh 下面这个表格的配置文件都没有设置过
all_proxy
all users | user | login shell | interactive shell | scripts | Terminal.app |
---|---|---|---|---|---|
=/etc/zshenv= | =.zshenv= | √ | √ | √ | √ |
=/etc/zprofile= | =.zprofile= | √ | x | x | √ |
=/etc/zshrc= | =.zshrc= | √ | √ | x | √ |
=/etc/zlogin= | =.zlogin= | √ | x | x | √ |
=/etc/zlogout= | =.zlogout= | √ | x | x | √ |
- 检查 eshell-login-script, eshell-rc-script 两个变量, 这两个文件都不存在.