Total Pageviews

Friday, 13 May 2016

mac下,使用 pyenv 来安装 Python环境


先安装 pyenv

官网:https://github.com/yyuu/pyenv
  1. 通过 Homebrew 安装
    brew update
    brew install pyenv
    使用 Homebew 安装的话一些基本的 pyenv 插件都安装了,就不必再次安装,例如 pyenv-pip-rehash 插件
  2. eval "$(pyenv init -)" 添加到 profile, 例如 .zshrc
  3. 一般不用进行如下操作
    默认使用的是 ~/.pyenv 目录,如果你需要使用 Homebrew 目录请将如下内容添加到 profile
    export PYENV_ROOT=/usr/local/var/pyenv
  4. 重新运行 shell
    exec $SHELL
具体 pyenv 用法可参考:https://github.com/yyuu/pyenv/blob/master/COMMANDS.md
既然这个项目是从 rbenv fork 而来的,想必用法也差不多了,事实也确实如此。

安装 Python3

  1. 查看可安装的 Python 版本
    pyenv install -l
  2. 安装具体的 Python 版本
    pyenv install 3.4.3
  3. 查看已经安装的 Python 版本
    pyenv versions
  4. 切换到需要的 Python 版本(全局生效)
    pyenv global 3.4.3
  5. 升级 pip
    pip install --upgrade pip
如果这时你执行 brew doctor 会出现类似如下的问题
$ 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 来安装
pip install virtualenv

基本使用

参考:Virtual Environments | Python Guide
  1. 为一个项目创建一个虚拟环境,名字为 venv, 可以改成你喜欢的名字
    cd my_project_folder
    virtualenv venv
  2. 也可以指定 Python 版本
    virtualenv -p /usr/local/bin/python3 venv
  3. 激活虚拟环境
    source ./venv/bin/activate
    如果不加参数那么全局安装的包也包括在内,如果不想加载全局的包可使用参数 --no-site-packages
    在虚拟环境激活的情况下,如果使用 pip 来安装各种包,包会被安装在当前虚拟环境下,即 ./venv 文件夹下, 并不会对全局环境产生影响
  4. 关闭虚拟环境:
    deactivate
  5. 删除虚拟环境,只需删除 ./venv 文件夹即可:
    rm -rf ./venv