快速上手Pipenv

Posted by Waynerv on

category: Python

Tags: pipenv

使用Pipenv

Pipenv简介

Pipenv是由Kenneth Reitz发布的Python依赖管理工具。可以看成是pip和virtualenv的结合体,使用pipfile来替代旧的依赖记录方式(requirements.txt)

Pipenv的优势

  • 不再需要分别使用pipvirtualenv来管理包和虚拟环境
  • 使用自动更新的pipfile代替需要手动操作且容易出问题的requirements.txt
  • 广泛使用Hash校验部署依赖时的包是否与开发时的依赖包相同,保证安全性
  • 可以通过$ pipenv graph呈现项目的包依赖关系
  • 通过自动加载.env读取环境变量,简化开发流程

安装和更新

  1. 安装Pipenv: $ pip3 install pipenv
  2. 更新Pipenv: $ pip3 --upgrade pipenv
  3. 卸载Pipenv: $ pip3 uninstall pipenv

创建虚拟环境

  1. 直接创建:$ pipenv install(如果未检测到目录内有pipfile文件,则自动创建虚拟环境,自动生成一个随机的虚拟环境目录名)
  2. 指定所使用的python版本后创建:
    • pipenv --three使用Python3
    • pipenv --two使用Python2
    • pipenv --python 3.7指定Python具体版本
  3. 使用$ pipenv install [packages]直接安装依赖包时,如果当前目录不包含虚拟环境,Pipenv会自动创建一个
  4. 默认情况下,Pipenv会自动为你选择虚拟环境的存储位置,在Windows下通常为C:\Users\Administrator.virtualenvs\,Linux或macOS则为~/.local/share/virtualenvs/。如果想将虚拟环境文件夹创建在项目根目录内,可以设置环境变量(linux系统)export PIPENV_VENV_IN_PROJECT=1

激活虚拟环境

  1. 切换到项目文件夹后激活虚拟环境:$ pipenv shell
  2. 在虚拟环境中执行命令:$ pipenv run [command],不需要先激活虚拟环境,但一定要先切换到虚拟环境所在目录,否则会直接在当前目录生成一个新的虚拟环境!
  3. 退出虚拟环境:执行$ exit命令
  4. 删除虚拟环境:$ pipenv --rm删除当前项目目录对应的虚拟环境

安装依赖包到虚拟环境

  1. 安装依赖包(不需要激活虚拟环境):$ pipenv install [packages],相当于在激活虚拟环境的情况下使用pip安装包

记录依赖包

  1. Pipenv会在创建虚拟环境时自动创建pipfile和pipfile.lock文件(如果不存在),并在你执行$ pipenv install$ pipenv uninstall命令时自动更新记录到文件中
  2. Pipfile用来记录项目依赖包列表,区分了生产环境和开发环境的包标识
  3. Pipfile.lock详细标识了该项目的安装的包的精确版本信息、最新可用版本信息和当前库文件的hash值,起到版本锁的作用(任何情况下都不要手动修改 Pipfile.lock 文件)

在部署环境安装依赖包

  1. 自动安装pipfile中记录的所有依赖:$ pipenv install

区分开发环境依赖包

  1. 安装依赖时添加--dev命令,将被自动写入到pipfile的dev-packages一节中。实例:$ pipenv install [packages] --dev
  2. 在新的开发环境安装依赖:$ pipenv install --dev(安装包括开发依赖在内的所有依赖)

过渡到Pipenv

  1. 在使用pipenv install命令时会自动读取requirements.txt文件安装依赖并生成Pipfile文件

更换安装源

  1. 在Pipfile文件中编辑更换对应的url:
[[source]]

url = "https://mirrors.aliyun.com/pypi/simple"
verify_ssl = true
name = "pypi"
  1. 执行安装命令时通过--pypi-mirror选项指定镜像源:
$ pipenv install --pypi-mirror https://mirrors.aliyun.com/pypi/simple
  1. 也可以设置环境变量:PIPENV_PYPI_MIRROR

跳过lock步骤

  1. 安装依赖包时的生成pipfile.lock有时非常耗时,通常更换安装源为国内镜像能大幅提升速度
  2. 跳过lock步骤并最后使用pipenv lock命令统一执行lock操作:执行pipenv install命令时添加--skip-lock选项

使用Pip和Virtualenv

创建虚拟环境

  1. $ virtualenv venv ,venv为可自定义的虚拟环境目录名称,虚拟环境文件夹创建在项目根目录内,其中包含独立的Python解释器环境

激活虚拟环境

  1. 在Linux或macOS系统中(提前切换到项目根目录):$ . venv/bin/activate
  2. 在Windows系统中(提前切换到项目根目录):> venv\Scripts\activate

安装依赖包到虚拟环境

  1. 需要先激活虚拟环境后才能安装:
$ . venv/bin/activate  
(venv)$ pip install [packages]

记录依赖包

  1. 将依赖列表写入requirements.txt文件,每次安装或卸载依赖包都需要手动更新该文件:(venv)$ pip freeze > requirements.txt

在部署环境安装依赖

  1. 需要先创建虚拟环境并激活:
$ virtualenv venv  # 创建虚拟环境
$ . venv/bin/activate  # 激活虚拟环境
(venv)$ pip install -r requirements.txt  # 安装requirement.txt中记录的依赖

区分开发环境依赖包

  1. 需要单独创建requirements-dev文件并写入对应依赖,如:
-r requirements.txt
pytest==1.2.3
  1. 安装开发环境依赖:(venv)$ pip install -r requirements-dev.txt

Pipenv帮助信息

$ pipenv
Usage: pipenv [OPTIONS] COMMAND [ARGS]...

Options:
  --where          Output project home information. 定位项目所在文件夹
  --venv           Output virtualenv information. 定位虚拟环境目录所在文件夹
  --py             Output Python interpreter information. 定位Python解释器所在文件夹
  --envs           Output Environment Variable options. 输出环境变量选项
  --rm             Remove the virtualenv. 删除虚拟环境
  --bare           Minimal output. 最小输出
  --completion     Output completion (to be eval'd).
  --man            Display manpage. 显示手册页面
  --three / --two  Use Python 3/2 when creating virtualenv. 指定Python3/2创建虚拟环境
  --python TEXT    Specify which version of Python virtualenv should use. 指定Python具体版本创建虚拟环境
  --site-packages  Enable site-packages for the virtualenv. 在虚拟环境中加载系统已安装的第三方包
  --version        Show the version and exit.
  -h, --help       Show this message and exit.


Usage Examples:
   Create a new project using Python 3.7, specifically:
   $ pipenv --python 3.7

   Remove project virtualenv (inferred from current directory):
   $ pipenv --rm

   Install all dependencies for a project (including dev):
   $ pipenv install --dev

   Create a lockfile containing pre-releases:
   $ pipenv lock --pre

   Show a graph of your installed dependencies:  展示项目包依赖关系
   $ pipenv graph

   Check your installed dependencies for security vulnerabilities: 检查安全漏洞(校验Hash值)
   $ pipenv check

   Install a local setup.py into your virtual environment/Pipfile:
   $ pipenv install -e .

   Use a lower-level pip command:
   $ pipenv run pip freeze

Commands:
  check      Checks for security vulnerabilities and against PEP 508 markers
             provided in Pipfile.
  clean      Uninstalls all packages not specified in Pipfile.lock.
  graph      Displays currently–installed dependency graph information.
  install    Installs provided packages and adds them to Pipfile, or (if no
             packages are given), installs all packages from Pipfile.
  lock       Generates Pipfile.lock. 生成Pipfile.lock文件
  open       View a given module in your editor.
  run        Spawns a command installed into the virtualenv.
  shell      Spawns a shell within the virtualenv.
  sync       Installs all packages specified in Pipfile.lock.
  uninstall  Un-installs a provided package and removes it from Pipfile.

注:转载本文,请与作者联系




如果觉得文章对您有价值,请作者喝杯咖啡吧

|
donate qrcode

欢迎通过微信与我联系

wechat qrcode

0 Comments latest

No comments.