PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解

hello,小伙伴们大家好,今天给大家介绍的开源项目是Python虚拟环境管理工具,Pipenv是Python官方推荐的包管理工具。可以说,它集成了virtualenv, pippyenv三者的功能。其目的旨在集合了所有的包管理工具的长处,如: npm, yarn, composer等的优点。

Pipenv试图解决的问题是多方面的:

我们不需要再手动创建虚拟环境,Pipenv会自动为我们创建,它会在某个特定的位置创建一个 virtualenv 环境,然后调用 pipenv shell 命令切换到虚拟环境。使用 requirements.txt 可能会导致一些问题,所以 Pipenv 使用 PipfilePipfile.lock 来替代之,而且 Pipfile 如果不存在的话会自动创建,而且在安装、升级、移除依赖包的时候会自动更新 PipfilePipfile.lock 文件。哈希值随处可见。安全。自动公开安全漏洞。让您深入了解依赖关系图(例如$ pipenv graph)。随时查看图形化的依赖关系。可通过自动加载 .env 读取环境变量,简化开发流程。

安装Pipenv

MacOS

$ brew install pipenv

Debian

$ sudo apt install pipenv

Fedora

$ sudo dnf install pipenv

假如你电脑上有多个Python版本,你可以指定Python版本安装

$ python3 -m pip install pipenv

常用命令

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

Options:
 --where  显示项目文件所在路径
 --venv  显示虚拟环境实际文件所在路径
 --py  显示虚拟环境Python解释器所在路径
 --envs  显示虚拟环境的选项变量
 --rm  删除虚拟环境
 --bare  最小化输出
 --completion 完整输出
 --man  显示帮助页面
 --three / --two 使用Python 3/2创建虚拟环境(注意本机已安装的Python版本)
 --python TEXT 指定某个Python版本作为虚拟环境的安装源
 --site-packages 附带安装原Python解释器中的第三方库
 --jumbotron An easter egg, effectively.
 --version 版本信息
 -h, --help 帮助信息

命令参数

Commands:
 check 检查安全漏洞
 graph 显示当前依赖关系图信息
 install 安装虚拟环境或者第三方库
 lock 锁定并生成Pipfile.lock文件
 open 在编辑器中查看一个库
 run 在虚拟环境中运行命令
 shell 进入虚拟环境
 uninstall 卸载一个库
 update 卸载当前所有的包,并安装它们的最新版本

基本使用

我们可以创建一个项目,名称 PipenvTest,然后新建一个 Python 脚本,例如叫 tst_env.py,内容为:

import django
print(django.get_version())

结果如下:

1.12

我们可以看到系统安装的 Django 版本是 1.12。但是我们想要本项目基于 Django 2.x 开发,当然我们可以选择将系统的 Django 版本升级,但这样又可能会影响其他的项目的运行,所以这并不是一个好的选择。为了不影响系统环境的 Django 版本,所以我们可以用 Pipenv 来创建一个虚拟环境。

在该目录下,输入 pipenv 命令即可查看命令的完整用法:

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

Options:
 --update  Update Pipenv & pip to latest.
 --where  Output project home information.
 --venv  Output virtualenv information.
 --py  Output Python interpreter information.
 --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.
 --python TEXT Specify which version of Python virtualenv should use.
 --site-packages Enable site-packages for the virtualenv.
 --jumbotron An easter egg, effectively.
 --version Show the version and exit.
 -h, --help Show this message and exit.

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

 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:
 $ pipenv check

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

Commands:
 check Checks for security vulnerabilities and against PEP 508 markers
  provided in Pipfile.
 graph Displays currently–installed dependency graph information.
 install Installs provided packages and adds them to Pipfile, or (if none
  is given), installs all packages.
 lock Generates 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.
 uninstall Un-installs a provided package and removes it from Pipfile.
 update Uninstalls all packages, and re-installs package(s) in [packages]
  to latest compatible versions.

创建虚拟环境

第一步首先验证一下当前的项目是没有创建虚拟环境的,调用如下命令:

$ pipenv --venv

结果如下

No virtualenv has been created for this project yet!
Aborted!

这说明当前的项目尚未创建虚拟环境,接下来我们利用 Pipenv 来创建一个虚拟环境:

$ pipenv --three
或者
$ pipenv install --python 3.6

创建一个 Python3 的虚拟环境,–-three 代表创建一个 Python3 版本的虚拟环境,–-python 则可以指定特定的 Python 版本,当然如果指定了 --two 或者 --three 选项参数,则会使用 python2 或者 python3 的版本安装,否则将使用默认的 python 版本来安装。但前提你的系统必须装有该版本的 Python 才可以。

当然也可以指定准确的版本信息:

$ pipenv install --python 3
$ pipenv install --python 3.6
$ pipenv install --python 2.7.14

pipenv 会自动扫描系统寻找合适的版本信息,如果找不到的话,同时又安装了 pyenv 的话,则会自动调用 pyenv 下载对应版本的 python, 否则会报错。

这时候在当前 new_env 环境下生成 Pipfile 和 Pipfile.lock 两个环境初始化文件。

接下来我们可以切换到该虚拟环境下执行命令,执行如下命令即可:

$ pipenv shell

使用Pipenv来安装第三方包

$ pipenv install urllib3

此时,Pipfile 里有最新安装的包文件的信息,如名称、版本等。用来在重新安装项目依赖或与他人共享项目时,你可以用 Pipfile 来跟踪项目依赖。

Pipfile 是用来替代原来的 requirements.txt 的,内容类似下面这样。source 部分用来设置仓库地址,packages 部分用来指定项目依赖的包,dev-packages 部分用来指定开发环境需要的包,这样分开便于管理。

$ cat Pipfile

[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"

[packages]
"urllib3" = "*"

[dev-packages]

[requires]
python_version = "3.6"

Pipfile.lock 则包含你的系统信息,所有已安装包的依赖包及其版本信息,以及所有安装包及其依赖包的 Hash 校验信息。

$ Pipfile.lock
{
 "_meta": {
 "hash": {
  "sha256": "af58f3510cb613d4d9241128f9a0ceb9bb936ad907543e23ad8317011dcb6715"
 },
 "pipfile-spec": 6,
 "requires": {
  "python_version": "3.6"
 },
 "sources": [
  {
  "name": "pypi",
  "url": "https://pypi.org/simple",
  "verify_ssl": true
  }
 ]
 },
 "default": {
  "urllib3": {
  "hashes": [
  "sha256:a68ac5e15e76e7e5dd2b8f94007233e01effe3e50e8daddf69acfd81cb686baf",
  "sha256:b5725a0bd4ba422ab0e66e89e030c806576753ea3ee08554382c14e685d117b5"
  ],
  "index": "pypi",
  "version": "==1.23"
 }
 },
 "develop": {}
}

那么到这里有小伙伴可能就会问了, Pipfile 和 Pipfile.lock 有什么用呢?

Pipfile 其实一个 TOML 格式的文件,标识了该项目依赖包的基本信息,还区分了生产环境和开发环境的包标识,作用上类似 requirements.txt 文件,但是功能更为强大。Pipfile.lock 详细标识了该项目的安装的包的精确版本信息、最新可用版本信息和当前库文件的 hash 值,顾明思义,它起了版本锁的作用,可以注意到当前 Pipfile.lock 文件中的 Django 版本标识为 ==2.0.2,意思是当前我们开发时使用的就是 2.0.2 版本,它可以起到版本锁定的功能。

举个例子,刚才我们安装了 Django 2.0.2 的版本,即目前(2018.2.27)的最新版本。但可能 Django 以后还会有更新,比如某一天 Django 更新到了 2.1 版本,这时如果我们想要重新部署本项目到另一台机器上,假如此时不存在 Pipfile.lock 文件,只存在 Pipfile文件,由于 Pipfile 文件中标识的 Django 依赖为 django = “*”,即没有版本限制,它会默认安装最新版本的 Django,即 2.1,但由于 Pipfile.lock 文件的存在,它会根据 Pipfile.lock 来安装,还是会安装 Django 2.0.2,这样就会避免一些库版本更新导致不兼容的问题。

Rember:任何情况下都不要手动修改 Pipfile.lock 文件!

常用命令

我们可以使用 –-venv 参数来获得虚拟环境路径:

$ pipenv --venv
/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre

项目路径

$ pipenv --where
/Users/kennethreitz/Library/Mobile Documents/com~apple~CloudDocs/repos/kr/pipenv/test

找到Python解释器:

$ pipenv --py
/Users/kennethreitz/.local/share/virtualenvs/test-Skyy4vre/bin/python

安装指定软件包:

$ pipenv install urllib3==1.22

安装开发环境下的包:
通常有一些Python包只在你的开发环境中需要,而不是在生产环境中,例如单元测试包。 Pipenv使用--dev标志区分两个环境。
加 --dev 表示包括 Pipfile 的 dev-packages 中的依赖。

$ pipenv install django --dev
Installing pytest...
...
Adding pytest to Pipfile's [dev-packages]...

django库现在将只在开发虚拟环境中使用。如果你要在你的生产环境中安装你的项目:

pipenv install

这不会安装django包。

但是,如果有一个开发人员将你的项目克隆到自己的开发环境中,他们可以使用--dev标志,将django也安装:

pipenv install --dev

也就是说一个--dev参数,帮你在同一个虚拟环境中又区分出了开发和非开发环境。

显示依赖关系图:

$ pipenv graph
requests==2.18.4
 - certifi [required: >=2017.4.17, installed: 2017.7.27.1]
 - chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
 - idna [required: >=2.5,<2.7, installed: 2.6]
 - urllib3 [required: <1.23,>=1.21.1, installed: 1.22]

生成一个锁文件:

$ pipenv lock
Assuring all dependencies from Pipfile are installed...
Locking [dev-packages] dependencies...
Locking [packages] dependencies...
Note: your project now has only default [packages] installed.
To install [dev-packages], run: $ pipenv install --dev

卸载第三方包:

$ pipenv uninstall urllib3
或者
$ pipenv uninstall --all

更新安装包

$ pipenv update urllib3
$ pipenv update # 更新所有安装包

检查软件包的完整性
你是否担心已安装的软件包有没有安全漏洞?没关系,pipenv 可以帮你检查,运行下面的命令:

$ pipenv check
Checking PEP 508 requirements…
Passed!
Checking installed package safety…
All good!

产生 Pipfile.lock
有时候可能 Pipfile.lock 文件不存在或被删除了,这时候我们可以使用如下命令生成:

$ pipenv lock

以上便是一些常用的 Pipenv 命令,如果要查看更多用法可以参考其官方文档:https://docs.pipenv.org/#pipenv-usage。

修改下载源Pipenv

如果你觉得在使用pipenv install安装的过程中下载比较慢可以指下载源:

[[source]]
name = "pypi"
url = "https://pypi.tuna.tsinghua.edu.cn/simple/"
verify_ssl = true

[dev-packages]

[packages]
requests = "*"
paho-mqtt = "*"
pymongo = "*"
can = "*"
crypto = "*"
gvent = "*"
gevent = "*"

[requires]
python_version = "3.7"

只需要修改Pipfile即可。

Pip下载源

阿里: http://mirrors.aliyun.com/pypi/simple/
豆瓣: http://pypi.douban.com/simple/
清华: https://pypi.tuna.tsinghua.edu.cn/simple

PyCharm配置Pipenv

添加Python解释器

选择Pipenv 虚拟环境
Base interpreter为本机系统中的python解释器路径
Pipenv executable表示pipenv,命令的环境变量路径

在项目下选择刚刚新建好的Pipenv名称。

项目地址:https://github.com/pypa/pipenv

总结

到此这篇关于PyCharm+Pipenv虚拟环境开发和依赖管理的文章就介绍到这了,更多相关PyCharm+Pipenv虚拟环境作开发和依赖管理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • PyCharm导入python项目并配置虚拟环境的教程详解

    进入PyCharm后,点击File→Open,然后在弹窗中选择需要导入项目的文件夹: 打开了python项目后,需要配置该项目对应的python才可以正常运行: 配置步骤:File→settings 在设置弹窗中选择Project Interpreter,然后点击add: 在弹窗中,选择Existing environment,路径可以选择python项目的路径: 然后就大功告成了,可以去试着运行你的程序了~ 总结 以上所述是小编给大家介绍的PyCharm导入python项目并配置虚拟环境的教程

  • Windows下pycharm创建Django 项目(虚拟环境)过程解析

    1. 背景 我在 Windows 下的 pycharm 直接创建 全新 Django 项目 会 pip 和其他报错 ,暂时解决不了,另外后续的多个项目只需要一套python 环境, 所以可以 利用 virtualenv 创建一个 虚拟环境,pycharm 创建的 Django 项目 在选择解释器的时候 选择虚拟环境的解释器. 2. virtualenv 安装 https://www.jb51.net/article/170070.htm 在 虚拟环境里面 安装 Django 版本 1.11.24

  • PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解

    hello,小伙伴们大家好,今天给大家介绍的开源项目是Python虚拟环境管理工具,Pipenv是Python官方推荐的包管理工具.可以说,它集成了virtualenv, pip和pyenv三者的功能.其目的旨在集合了所有的包管理工具的长处,如: npm, yarn, composer等的优点. Pipenv试图解决的问题是多方面的: 我们不需要再手动创建虚拟环境,Pipenv会自动为我们创建,它会在某个特定的位置创建一个 virtualenv 环境,然后调用 pipenv shell 命令切换

  • 使用Vue开发动态刷新Echarts组件的教程详解

    需求背景:dashboard作为目前企业中后台产品的"门面",如何更加实时.高效.炫酷的对统计数据进行展示,是值得前端开发工程师和UI设计师共同思考的一个问题.今天就从0开始,封装一个动态渲染数据的Echarts折线图组件,抛砖引玉,一起来思考更多有意思的组件. 准备工作 项目结构搭建 因为生产需要(其实是懒),所以本教程使用了 ==vue-cli==进行了项目的基础结构搭建. npm install -g vue-cli vue init webpack vue-charts cd

  • Golang开发Go依赖管理工具dep安装验证实现过程

    目录 Go依赖管理工具 环境要求 目前版本 安装 验证 初始化 默认初始化 优先从$GOPATH初始化 Gopkg.toml Gopkg.lock 常用命令 dep ensure dep ensure -add dep ensure -update Go依赖管理工具 Go dependency management tool 环境要求 Golang >= 1.9Dep 目前版本 dep: version : devel build date : git hash : go version : g

  • Maven分模块开发与依赖管理和聚合和继承及属性深入详细介绍

    目录 前言 分模块开发 1.1 分模块开发理念 1.按照功能拆分 2.按照模块拆分 1.2 分模块开发实现 2.依赖管理 2.1 依赖传递与冲突问题 2.2 可选依赖和排除依赖 3.聚合和继承 3.1 聚合 3.2 继承 3.3 聚合VS继承 4.属性 4.1 定义父工程属性 4.2 修改依赖的version 5.配置文件加载属性 5.1 父工程定义属性 5.2 jdbc.properties文件中引用属性 5.3 设置maven过滤文件范围 前言 对于复杂庞大的项目,maven的熟练使用可以大

  • 如何在python开发工具PyCharm中搭建QtPy环境(教程详解)

    在Python的开发工具PyCharm中安装QtPy5(版本5):打开"File"--"Settings"--"Project Interpreter",点击窗口中右侧点添加按钮,然后在弹出的窗口添加PyQt5模块包,单击Install Package按钮,如图所示: 安装好安装PyQt5后,需要用同样的方法安装pyqt5-tools,安装PyQt5后没有designer.exe就是因为没有安装pyqt5-tools.安装好PyQt5后,desi

  • python virtualenv虚拟环境配置与使用教程详解

    概述 python开发过程中,我们可能需要同时开发多款应用,这些应用可能公用同一个版本的Python程序,但是使用不同版本的第三方库,比如A应用使用six 1.12.0,而B应用需要使用six 1.15.0.这种情况下,virtualenv就派上用场了,它能为每个应用提供一套"相对独立"的Python虚拟运行环境. 注意,这里为啥是"相对独立"而不是"绝对独立"呢?针对一些.exe依赖程序,默认安装时,不会安装在虚拟环境中,安装后为各个应用共享,

  • Maven管理SpringBoot Profile详解

    1. Spring Profile Spring可使用Profile绝对程序在不同环境下执行情况,包含配置.加载Bean.依赖等. Spring的Profile一般项目包含:dev(开发), test(单元测试), qa(集成测试), prod(生产环境).由spring.profiles.active属性绝定启用的profile. SpringBoot的配置文件默认为 application.properties(或yaml,此外仅心properties配置为说明).不同Profile下的配置

  • Python 安装 virturalenv 虚拟环境的教程详解

    一.概述 有时候会在一台主机上安装多个不同的Python版本,用以运行不同时期开发的项目, 而在这些不同的Python版本上有时又会加装不同的库和包.因此需要一种工具来管理各个不同的Python版本和运行环境. virtualenv工具可以为每个Python项目创建一个"独立隔离"的虚拟Python运行环境,而且每个项目都可以为自己独立的Python 运行环境加装不同的扩展包和库,而不影响其他项目. 在使用virtualenv之前,首先需要保证你的操作系统上已经安装了所需的Python

  • PyQt5+Pycharm安装和配置图文教程详解

    PyQt5安装 之前安装过anaconda,里面是含有pyqt的,在环境里搜索可以看到,但是针对实际开发,并没有全部的qt5工具,所以需要再次安装. 在cmd里面运行: pip install PyQt5 -i https://pypi.douban.com/simple 安装常用的Qt工具: pip install PyQt5-tools -i https://pypi.douban.com/simple 在C:\Users\Administrator\Anaconda3\Lib\site-p

  • Pycharm IDE的安装和使用教程详解

    首先我们先总结下Python可使用的集成开发环境(IDE,Integrated Development Environment )专业,佩服自己. Sublime Pycharm IPython IDLE vscode 第一个出场的兄弟就是sublime,我们首先看看它长什么样子 这样看起来也是高端大气上档次的,好漂亮的页面,深邃的颜色直指人心,想要了解的小伙伴可以点这个进入官方网站看看介绍(这里咱们不过多介绍了,毕竟咱们用的最最最多的还是pycharm,这个sublime我们在编写前端的时候比

随机推荐