目前使用 pyenv,管理不同版本 python方便

旧项目一般是 virtualenv

使用 pipenv 管理

pipenv 是官方推荐的管理python环境的方式,不需要激活虚拟环境,进入到项目的虚拟环境就可以了

安装:
pip3 install pipenv

创建项目文件夹,在项目目录下执行:

  1. pipenv --python 3.6
  2. pipenv install django

会在目录下创建 Pipfile 文件,内容:

  1. [[source]]
  2. name = "pypi"
  3. url = "https://mirrors.aliyun.com/pypi/simple/" # 修改镜像
  4. verify_ssl = true
  5. [dev-packages] # 开发的依赖包
  6. [packages] # 生产环境包
  7. django = "*"
  8. [requires]
  9. python_version = "3.6"

每次使用 pipenv 安装新包的时候都会更新 Pipfile 的内容

开发时可以设置跳过 lock 的过程,等项目开发好了再更新 lock 的 哈希值:

  1. pipenv install request --skip-lock

查看包依赖:

  1. root@xxx:/home/myproject# pipenv graph
  2. Django==2.2.3
  3. - pytz [required: Any, installed: 2019.1]
  4. - sqlparse [required: Any, installed: 0.3.0]

使用 pyenv 创建 python 虚拟环境

github:https://github.com/pyenv/pyenv
码云:https://gitee.com/mirrors/pyenv

1. 安装 pyenv

国内是用码云:
centos 7

  1. // 克隆码云的 pyenv 源代码
  2. git clone https://gitee.com/mirrors/pyenv.git ~/.pyenv
  3. // (可选)尝试编译动态bash扩展以加快pyenv的速度。如果它失败了,请不要担心。pyenv仍然可以正常工作
  4. cd ~/.pyenv && src/configure && make -C src

vim ~/.bashrc 加入以下命令

  1. export PYENV_ROOT="$HOME/.pyenv"
  2. export PATH="$PYENV_ROOT/bin:$PATH"
  3. eval "$(pyenv init -)"
  4. # virtualenv 插件用的初始化命令
  5. eval "$(pyenv virtualenv-init -)"

source ~/.bashrc

安装 virtualenv 插件

  1. git clone https://gitee.com/ALVIN-YANG/pyenv-virtualenv ~/.pyenv/plugins/pyenv-virtualenv

2. pyenv 常用命令

  • 列出所有命令, * 后 是当前 python 版本

    pyenv versions

  • 查看可安装版本

    pyenv install -l

  • 安装对应版本

pyenv install 3.7.0

  • 卸载对应版本

pyenv uninstall 3.7.0

  • 切换 python 版本: 有三个优先级 shell > local > global

python shell/local/global 3.7.0

  • 查看 pyenv 安装的插件

ls -la ~/.pyenv/plugins

  • python 各个版本路径

/root/.pyenv/versions/2.7.6/

3.pyenv 的插件 pyenv-virtualenv

  • 列出 pyenv 所有虚拟环境

pyenv virtualenvs

  • 激活虚拟环境

pyenv activate xxx

  • 创建虚拟环境

pyenv virtualenv [版本名] [环境名]

  • 删除虚拟环境

_pyenv_`` ``uninstall [环境名]

虚拟环境位置:
/root/.pyenv/versions/2.7.6/envs/xxxxxx

如果切换不生效

https://github.com/pyenv/pyenv/issues/185

$PYENV_ROOT/bin 修改成 $PYENV_ROOT/shims

  1. export PYENV_ROOT=~/.pyenv
  2. export PATH=$PYENV_ROOT/shims:$PATH

4. 镜像安装 只需修改 v

  1. v=3.7.3;wget https://npm.taobao.org/mirrors/python/$v/Python-$v.tar.xz -P ~/.pyenv/cache/;pyenv install $v

提醒 需要安装依赖
创建 python 虚拟环境 - 图1

centos:
yum -y install bzip2-devel readline-devel sqlite-devel libffi-devel
ubuntu:
apt-get install -y libssl-dev libreadline-dev libsqlite3-dev libffi-devel

over

连接 mysql
centos:
yum install mysql-devel
ubuntu:
apt-get install libmysqlclient-dev


使用 virtualenvwrapper 安装

  1. pip install virtualenv virtualenvwrapper

安装完成后,在~/.zshrc写入以下内容

  1. # 存放虚拟环境的目录
  2. export WORKON_HOME=~/.virtualenv
  3. # virtrualenvwrapper会安装到python的bin目录下,(不同操作系统位置可能不一样,whereis 找一下)
  4. # 所以该路径是python安装目录下bin/virtualenvwrapper.sh
  5. source /usr/local/bin/virtualenvwrapper.sh

更新配置文件

  1. source ~/.zshrc

创建虚拟环境, 这样会在WORKON_HOME变量指定的目录下新建名为 env 的虚拟环境。

  1. mkvirtualenv env

若想指定python版本,可通过”—python”指定python解释器

  1. mkvirtualenv --python=/usr/local/Cellar/python/3.7.0/bin/python env3

查看当前的虚拟环境目录

  1. [root@localhost ~]# workon
  2. py2
  3. py3

切换到虚拟环境

  1. [root@localhost ~]# workon py3

退出虚拟环境

  1. (py3) [root@localhost ~]# deactivate
  2. [root@localhost ~]#


删除虚拟环境

  1. rmvirtualenv venv