@
pimin 我试了下,貌似 Anaconda 对我这不起作用。
我研究了下,如果不改 sublime-build 里的命令,要想让 Sublime Text 识别出 pyenv 切换的 Python 版本,则需要把 pyenv 的 shims 路径(/Users/<user>/.pyenv/shims )添加到 Sublime Text 的 PATH 环境变量中。
我试了几种办法修改 Sublime Text 的 PATH 环境变量,但每次 "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" 这几个路径都会在 Sublime Text 的 PATH 里优先于我设置的 pyenv 路径,使得 Sublime Text 只会去使用我安装在 /usr/local/bin/ 的 Python 版本,无法通过 pyenv 来切换版本。
最后发现,发生这种情况其实是因为 /etc/paths 文件里设置的路径对于 Sublime Text 3 是优先权最高的,而默认的 /etc/paths 内容为:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
所以导致 "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" 这几个路径总会位于 Sublime Text 的 PATH 环境变量的最前面。
因此设置 Sublime Text 3 的 PATH 环境变量的正确方法应当是去修改 /etc/paths 文件。
我把 pyenv 的 shims 路径(/Users/<user>/.pyenv/shims )添加到了 /etc/paths 文件的首行后, Sublime Text 3 就能正确识别出 pyenv global/local 命令切换的 Python 版本了,不再需要修改 sublime-build 或安装其它插件。
并且此方法另外的好处是,其它有依赖 Python 版本的插件(例如: Sublime REPL 、 Sublime Code Intel 、 Python Flake 8 Lint 等)也能自动识别出 pyenv 切换的 Python 版本,不再需要去修改它们的配置文件来指向正确的 Python 解释器了。
以上,把这个问题的解决方法写在这,供后人参考,少走一些弯路。