python虚拟环境安装和使用

TL;DR

  • Mac自带的python环境在有时会有第三方包冲突、python2和python3之间切换不方便以及第三方包安装需要root权限可能导致的安全问题等,所有就有了python虚拟环境,这里主要记录一下笔者在安装和使用pyenv以及virtualenv过程。

    pyenv安装和使用

  • 推荐使用brew安装pyenv

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # Install Homebrew
    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    # Install pyenv
    brew install pyenv
    # Add pyenv initializer to shell startup script
    # ZSH USERS: use ~/.zshrc instead of ~/.bash_profile
    # LINUX USERS: use ~/.bashrc instead of ~/.bash_profile
    echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
    # Restart your shell for changes to take effect
    exec $SHELL
  • 使用pyenv install –list 查看可用的python版本

  • 使用pyenv install 3.6.* 安装特定版本的python(建议安装个python2 和python3的环境即可)
  • 查看已安装的版本 pyenv versions
  • python环境切换 使用pyenv global xxx 或者pyenv local ,其中前者是全局的设置,而后者是针对当前项目python环境的设置,还可以使用pyenv shell xxx 设置当前shell的python版本,退出shell后失效。
  • 在进行版本切换的时候,可能会出现AttributeError: module ‘enum’ has no attribute ‘IntFlag’或者raise ImportError(‘This package should not be accessible on Python 3. ‘
    ImportError: This package should not be accessible on Python 3. Either you are trying to run from the python-future src folder or your installation of python-future is corrupted.这个错误,这个时候使用unset PYTHONPATH可以解决问题。

    配置pycharm

  • 现实中我们往往可能需要使用pycharm这种IDE进行python的开发,那么如何在pycharm中进行python版本的自由切换呢?
  • 其实pycharm 和idea都属于 jetbrains家族产品,使用上面很是类似。
  • 打开一个项目,选择file-> Default Settings-> Python Interpreter-> show ALL -> +号 -> Existing environment -> 进行下拉框的选择就OK
  • 之后就可以通过添加完的Python Interpreter选择对应版本的Interpreter进行解释执行了。

    virtualenv的安装和使用

  • pyenv用于不同python版本之间的切换,还有一种场景就是在确定了python版本之后,需要第三方包不同版本之间的切换,比如不同版本的django版本之间的版本切换,于是就有了virutalenv。
  • 安装(还是brew)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # Install Homebrew
    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    # Install pyenv-virtualenv
    brew install pyenv-virtualenv
    # Add pyenv-virtualenv initializer to shell startup script
    # ZSH USERS: use ~/.zshrc instead of ~/.bash_profile
    # LINUX USERS: use ~/.bashrc instead of ~/.bash_profile
    echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bash_profile
    # Restart your shell for changes to take effect
    exec $SHELL
  • 创建一个虚拟环境 例如 pyenv virtualenv 3.6.1 django-1.10

  • 激活这个虚拟环境 例如 pyenv activate django-1.10
  • 安装对应版本的第三方包 pip install django==1.10
  • 如上图所示,就相当于进一步定制化了环境(python2.7.14 and django==1.10)。
  • 此外和上面配置pycharm一样对pycharm进行相应开发环境的配置。
  • 退出当前的虚拟环境 pyenv deactivate xxx

    python常见问题

  • windows下pip安装速度慢解决方法 可以在使用pip的时候加参数-i https://pypi.tuna.tsinghua.edu.cn/simple
  • 例如:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider,这样就会从清华这边的镜像去安装pyspider库。

    Reference

    Python Development on macOS with pyenv-virtualenv Python多版本管理器-pyenv 介绍及部署记录