使用 pyenv 来安装 Python

先安装 pyenv

官网:https://github.com/yyuu/pyenv

  1. 通过 Homebrew 安装

    1
    2
    brew update
    brew install pyenv
    

    使用 Homebew 安装的话一些基本的 pyenv 插件都安装了,就不必再次安装,例如 pyenv-pip-rehash 插件

  2. eval "$(pyenv init -)" 添加到 profile, 例如 .zshrc

  3. 一般不用进行如下操作

    默认使用的是 ~/.pyenv 目录,如果你需要使用 Homebrew 目录请将如下内容添加到 profile

    1
    export PYENV_ROOT=/usr/local/var/pyenv
    
  4. 重新运行 shell

    1
    exec $SHELL
    

具体 pyenv 用法可参考:https://github.com/yyuu/pyenv/blob/master/COMMANDS.md
既然这个项目是从 rbenv fork 而来的,想必用法也差不多了,事实也确实如此,
亦可参考我以前写的文章《在 Mac 上用 rbenv 安装 ruby - 安装 Ruby | 明无梦的博客》
《在 Mac 上用 rbenv 安装 ruby - 管理 Ruby | 明无梦的博客》

安装 Python3

  1. 查看可安装的 Python 版本

    1
    pyenv install -l
    
  2. 安装具体的 Python 版本

    1
    pyenv install 3.4.3
    
  3. 查看已经安装的 Python 版本

    1
    pyenv versions
    
  4. 切换到需要的 Python 版本(全局生效)

    1
    pyenv global 3.4.3
    
  5. 升级 pip

    1
    pip install --upgrade pip
    

如果这时你执行 brew doctor 会出现类似如下的问题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$ brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry and just ignore them. Thanks!

Warning: python is symlinked to python3
This will confuse build scripts and in general lead to subtle breakage.

Warning: "config" scripts exist outside your system or Homebrew directories.
`./configure` scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.

Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:

  /Users/mwum/.pyenv/shims/python-config
  /Users/mwum/.pyenv/shims/python3-config
  /Users/mwum/.pyenv/shims/python3.4-config
  /Users/mwum/.pyenv/shims/python3.4m-config

解决办法参考:
【Homebrew】brew doctorのWarning対処方法 (その3) + envコマンドについて
pyenv not playing nice with brew “config”. [$5] #106

方法为:
alias brew='"env" PATH=${PATH//$(pyenv root)\/shims:/} brew' 添加到 profile

外什么要将其中的 env 加上 "" ?
执行 env 之后,如其中的结果出现了空格,会出现 No such file or directory 的问题,为了避免此问题,所以加上 ""

安装 Virtual Environments 及使用

官网:https://virtualenv.pypa.io

这个工具可使不同的项目保持不同的依赖,(很闲的话还可以使同一个项目保持不同的依赖)
例如,Project X 依赖版本 1.x, 但是 Project Y 依赖版本 4.x
也可使用 pyenv-virtualenv 这个工具,功能是一样的

通过 pip 来安装

1
pip install virtualenv

基本使用

参考:[Virtual Environments Python Guide](http://docs.python-guide.org/en/latest/dev/virtualenvs/)
  1. 为一个项目创建一个虚拟环境,名字为 venv, 可以改成你喜欢的名字

    1
    2
    cd my_project_folder
    virtualenv venv
    
  2. 也可以指定 Python 版本

    1
    virtualenv -p /usr/local/bin/python3 venv
    
  3. 激活虚拟环境

    1
    source ./venv/bin/activate
    

    如果不加参数那么全局安装的包也包括在内,如果不想加载全局的包可使用参数 --no-site-packages

    在虚拟环境激活的情况下,如果使用 pip 来安装各种包,包会被安装在当前虚拟环境下,即 ./venv 文件夹下,
    并不会对全局环境产生影响

  4. 关闭虚拟环境

    1
    deactivate
    
  5. 删除虚拟环境,只需删除 ./venv 文件夹即可

    1
    rm -rf ./venv