关于 MacOS 上 Python 版本的小问题

一直没有很理解这一块的逻辑。
原来有 python2.7 和 3.6.1,没有装 env,anaconda
3.6.1 装了 tensorflow、numpy 等包
后来更新了 3.7,3.7 里并没有 numpy 等包。3.6.1 也没被删。
现在在 terminal 里输入 python3 默认的是 3.7,请问我要使用 3.6.1 该如何使用?
目前唯一的办法是在 pycharm 里面可以搜索到 3.6.1 并调用。
既然 pycharm 可以搜索到 3.6.1,那么系统 terminal 也理应可以调用。
请各位大佬赐教。
关于 MacOS 上 Python 版本的小问题


11 回复

装 pyenv 管理 python 的环境


我无法理解你的问题

同 #1,系统自带的 python 最好不要去动它,用 pyenv 来安装管理你想要的 python 版本

找到 3.6.1 的位置,软连接到 path 目录下,改成与 python3 不同的名字(比如 python3.6 ) pip 也一样

系统变量 path 了解一下

在你的 bashrc 或者 zshrc 中手动设置 python 版本即可。

简单来说,你在终端下输入 python3 后,终端是依次从 PATH 系统变量里的目录里去找 python3 文件来运行,这个目录一般是 /usr/local/bin,然后 /usr/local/bin/python3 是软链接到真正 python3 的安装位置。你在装了更新版本的 python3 后, /usr/local/bin/python3 一般就会链接到新版本 python3 的位置,因此旧版本的 python3 就没法通过在终端里输入 python3 运行到了。
解决方法:
1. 找到 python 3.6 的安装位置,直接输入全路径来运行(也就是 pycharm 能调用到 3.6 的原因)。
2. 把 3.6 的实际路径软链接到 /usr/local/bin/python3.6,这样可以通过输入 python3.6 来运行。
3. 使用 pyenv 来管理切换 python 版本。(推荐)

建议 alias,,下面是我在 Ubuntu 下的做法(自己的包都装在虚拟环境下,不污染系统 python )

安装虚拟环境和 ipython:
virtualenv -p python2.7 --system-site-packages venv27
source venv27/bin/activate
pip install ipython

virtualenv -p python3.5 --system-site-packages venv35
source venv35/bin/activate
pip install ipython

创建 alias
function ipy2 {
  ~/win/venv27/bin/ipython
}

function ipy3 {
  ~/win/venv35/bin/ipython
}

function venv27 {
   source ~/win/venv27/bin/activate
}

function venv35 {
source ~/win/venv35/bin/activate
}

建议 alise 新学了一个 pipenv

次版本号更新,原来装的第三方包就是不能用了,我觉得这确实很不合理。要么就用回老版本 Python。

这就是虚拟环境的用处了,建议所有的应用都用一个隔离的环境,python 里面就装一些很有限的包,可以容忍每次更新 Python 次版本都重装一次的程度。

楼上说的 pipenv 就是干这个的

pycharm 可以比较明显的看到你的 python 安装在哪里,一般就 3 个地方,一个是 /usr/local/bin,一个是 anaconda/bin 下,一个在 Frameworks/Python.framework 下

回到顶部