Python虚拟环境的创建与管理

1-基本概念

虚拟环境是独立于 Python 全局环境的 Python 解释器环境,使用它的好处如下:

  • 保持全局环境的干净
  • 指定不同的依赖版本
  • 方便记录和管理依赖

如果同时开发多个Python程序,但应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办呢?
这时就需要让它们各自拥有一套“独立“的Python运行环境。

2-venv与virtualenv

1)安装虚拟环境创建模块

  • Python 3可使用 内置的 venv 模块创建虚拟环境。
    或者pip3 install virtualenv

  • Python 2则需要安装 virtualenv 作为替代:

     pip install virtualenv
     或 sudo pip install virtualenv
    

2)创建新的虚拟环境

  • venv: python -m venv c:\path\to\env
  • virtualenv: virtualenv env

上述命令的最后一个参数是虚拟环境名称,可以自由定义。

如果不想使用系统的包,加上–no-site-packeages参数

上述创建命令会在当前目录创建一个包含 Python 解释器环境的虚拟环境文件夹,名称为env。

3) 执行/退出虚拟环境

创建虚拟环境后,我们可以使用下面的命令来激活虚拟环境,如下所示(执行
deactivate 可以退出虚拟环境):

     $ env\Scripts\activate # Windows
     $ . env/bin/activate # Linux 或 macOS

这时命令提示符前会显示虚拟环境的名称,表示已经激活成功:

     (env) $

4)开发新项目时如何操作

  • 第一步:为项目创建目录 mkdir 文件夹名称
  • 第二步:创建一个独立的Python运行环境,命名为venv python -m venv venv
  • 第三步:激活使用 env\Scripts\activate 退出使用 deactivate
  • 如需删除使用的虚拟环境可直接删除该venv文件夹

5) venv的详细使用参数

     usage: venv [-h] [--system-site-packages] [--symlinks] [--clear]
                 [--upgrade] [--without-pip] ENV_DIR [ENV_DIR ...]

     Creates virtual Python environments in one or more target directories.

     positional arguments:
       ENV_DIR             A directory to create the environment in.

     optional arguments:
       -h, --help             show this help message and exit
       --system-site-packages Give access to the global site-packages dir to the
                              virtual environment.
       --symlinks             Try to use symlinks rather than copies, when symlinks
                                    are not the default for the platform.
       --copies               Try to use copies rather than symlinks, even when
                                   symlinks are the default for the platform.
       --clear                Delete the environment directory if it already exists.
                                  If not specified and the directory exists, an error is
                                 raised.
       --upgrade              Upgrade the environment directory to use this version
                                     of Python, assuming Python has been upgraded in-place.
       --without-pip          Skips installing or upgrading pip in the virtual environment (pip is bootstrapped by default)

使用时python -m venv [-参数]

6)其它有用指令

     pip freeze #查看当前安装库版本
     #创建 requirements.txt 文件,其中包含了当前环境中所有包及 各自的版本的简单列表
     #保持部署相同,一键安装所有包
     pip install -r requirements.txt
     pip freeze > requirements.txt 
     lsvirtualenv    #列举所有的环境
     cdvirtualenv    #导航到当前激活的虚拟环境的目录中,相当于pushd 目录
     cdsitepackages   # 和上面的类似,直接进入到 site-packages 目录
     lssitepackages     #显示 site-packages 目录中的内容

3-pyenv

在Python世界里,除了需要对Python的版本进行管理以外,还需要对不同的软件包进行管理。管理不同Python版本可使用pyenv。

1)pyenv是什么

pyenv是一个Python版本管理 工具,它能够进行全局的Python版本切换,也可以为单个项目提供对应的Python版本。使用pyenv以后,可以在服务器上安装多个不同的Python版本,也可以安装不同的Python实现。不同Python版本之间的切换也非常简单。

比如,, 在terminal中输入一个命令比如‘ls’时, shell会从当前环境的PATH中的各个目录里看是不是有ls这个可执行文件, 如果找到就执行, 否则就会报‘command no found’ 的错误, 同理, 只要控制PATH变量就能够做到python版本的切换, pyenv通过在PATH头部插入shims路径来实现对python版本的控制.

特点

  • pyenv侧重于python 解释器版本管理, 比包管理更大一个层级, 使用pyenv可以方便的下载指定版本的python解释器, pypy, anaconda等, 可以随时自由的在shell环境中本地、全局切换python解释器
  • 开发的时候不需要限定某个版本的虚拟环境, 只需要在部署的时候用pyenv指定某个版本就好了
  • pyenv切换解释器版本的时候, pip和ipython以及对应的包环境都是一起切换的, 所以如果你要同时运行ipython2.x和ipython3.x多个解释器验证一些代码时就很方便
  • pyenv也可以创建好指定的虚拟环境, 但不需要指定具体目录, 自由度更高, 使用也简单

2)简单使用

     # 查看当前版本
     pyenv version

     # 查看所有版本
     pyenv versions

     # 查看所有可安装的版本
     pyenv install --list

     # 安装指定版本
     pyenv install 3.6.5
     # 安装新版本后rehash一下
     pyenv rehash

     # 删除指定版本
     pyenv uninstall 3.5.2

     # 指定全局版本
     pyenv global 3.6.5

     # 指定多个全局版本, 3版本优先
     pyenv global 3.6.5 2.7.14

     # 实际上当你切换版本后, 相应的pip和包仓库都是会自动切换过去的

3)pyenv-win

pyenv自身不支持windows系统,但有大神在他其础上开发了相关工具pyenv-win,可满足基础功能使用。

安装

安装命令
pip install pyenv-win --target %USERPROFILE%/.pyenv %USERPROFILE%换成你要存放pyenv的路径。

配置环境变量:

  • 在系统变量中添加变量PYENV 值为%USERPROFILE%\.pyenv\pyenv-win 记得更改路径
  • 在变量PATH中添加pyenv命令(中间用分号隔开):%PYENV%\bin%PYENV%\shims
  • 2019年5月更新的windows用户要将%USERPROFILE%\AppData\Local\Microsoft\WindowsApps放在上面

验证安装是否成功
打开新的终端输入pyenv --version
在home路径运行pyenv rehash

使用

  • 安装一个版本的python: pyenv install 3.6.8

  • 如果操作超时可更换其默认的下载镜像源,比如淘宝镜像源:https://npm.taobao.org/mirrors/python/,替换掉 \pyenv-win\libexec\pyenv-install.vbs中的网址

      If mirror = mirrorEnvPath then
          mirror = "https://www.python.org/ftp/python"
    
  • 再次尝试下载,查看网速是否正常

  • 其他使用见pyenv

4-更换虚拟环境的Python版本

这里要用到pyenv和venv,且默认已经创建了一个虚拟环境

  • 1)在虚拟环境中使用pip freeze > requirements.txt,将所有依赖包及其版本号保存为需求文件
  • 2)deactivate退出虚拟环境,使用rm -rf (虚拟环境文件名)删除之前的虚拟环境
  • 3)使用pyenv设定当前文件夹的Python版本,pyenv local (设定版本号)
  • 4)使用venv重新创建虚拟环境,python -m venv (虚拟环境文件名)
    1. 激活虚拟环境 虚拟环境文件名\scripts\activate,将需求文件导入pip install -r requirements.txt
  • 6)查看是否导入成功pip list

你可能感兴趣的:(Python虚拟环境的创建与管理)