包管理神器-pipenv
一:前言
介绍一个包管理神器-pipenv,这个工具可以让我们在写代码、创建Python运行环境、package依赖关系以及项目合作的时候更有效率。
在pycon2018上,Kenneth Reitz介绍的Pipenv在不久就成为了Python官方推荐的包管理工具。下面是pycon2018的链接,推荐大家看看:https://www.bilibili.com/video/av26610021/?p=1。
二:Python包管理历史
最初的时候,我们有了Python,但是没有干净的方法来安装软件包,早期的时候,当用户想安装包时,需要先从网上把文件下载下来,解压,然后执行Python setup.py install,就能将包安装好。
后来有了PyPI,开发者可以把他们的包上传到上面,然后其他开发者可以从这里下载他们需要的包,然后再执行python setup.py install 进行安装,但是这样还是存在许多的问题,比如说:整个过程需要人工,不方便自动化,无法安装多个不同版本等等。
再后来有了easy_install,当用户想要安装某个包的是否,只要执行easy_install 包名,工具就会自动把包以及依赖下载下来进行安装,这解决了无法自动化的问题,但是这种方法又带来了新的问题,只能安装,却没有方法卸载。
到了2008年,pip出现了,还引入了requirements files的概念,可以使用户非常方便的复制Python环境。比如说安装某个包,执行pip install 包名,需要卸载,执行pip uninstall 包名,需要批量安装,执行pip install -r requirements.txt。直到现在,pip已经成为非常好用的包管理工具了。pip解决了单个环境下的包管理问题,但是如果我们需要在一台机器上开发多个项目,这多个项目用到了相同包的不同版本,这就成了非常棘手的问题了。
为了解决这个问题,virtualenv出现了。virtualenv可以为每个项目创建一套隔离的Python环境,再使用pip进行包管理。目前pip+virtualenv是目前比较主流的Python开发流程。慢慢的这种方式也逐渐暴露出了缺点,比如pip的requirements.txt过于简单,没办法表示具体的依赖关系,需要使用两个工具(pip+virtualenv)才能完成工作。
为了解决这两个问题pipenv登场了,它主要使用pipfile来取代之前的requirements.txt,pipfile比requirements.txt表达能力更强,默认支持两种依赖,可以将多个requirements.txt的内容合并到一起,方便管理,并且通过pipfile.lock对环境进行明确,详细的描述。pipenv可以让你无缝的使用pipfile,pipfile.lock,保证每个依赖的信息都是明确的,它提供简洁的命令操作virtualenv,并且提供很多辅助工具,比如pipenv graph,可以显示项目的完整依赖关系。
目前Pipenv已经是Python官方推荐的工作流工具了。
三:Pipenv实操
目前pycharm2018.2.4版本以上已经支持pipenv了。
首先打开命令行:输入pip install pipenv 安装pipenv库。

然后输入:pipenv,如果有如下提示说明安装成功。

- 接着打开pycharm创建一个项目。


- 项目创建完成否生成一个pipfile文件,该文件默认的源是国外的,为了增加安装库的速度,我们把源改成清华源:https://pypi.tuna.tsinghua.edu.cn/simple


下面我们打开pycharm自带的terminal来安装一个简单的模块,检测是否成功。
在命令行输入:pipenv install requests



如果出现如下错误,说明项目名称包含中文名。

至此,基本的pipenv环境就搭建好了。
四:pipenv命令详解
pip install --user --upgrade pipenv # 用户安装pipenv
pipenv --three # 会使用当前系统的Python3创建环境
pipenv --two # 使用python2创建
pipenv --python 3.6 指定某一Python版本创建环境
pipenv run python 文件名 pipenv run pip ...# 运行pip
pipenv shell 激活虚拟环境
pipenv --where 显示目录信息
pipenv --venv 显示虚拟环境信息
pipenv --py 显示Python解释器信息
pipenv install requests 安装相关模块并加入到Pipfile
pipenv install django==1.11 安装固定版本模块并加入到Pipfile
pipenv graph # 显示依赖图
pipenv check #检查安全漏洞
pipenv lock # 生成lockfile
pipenv update # 更新所有的包
pipenv --rm # 删除虚拟环境
pipenv uninstall requests # 卸载包并从Pipfile中移除
pipenv uninstall --all # 卸载全部包
包管理神器-pipenv的更多相关文章
- Python3 系列之 环境包管理神器 pipenv
环境说明:Windows 10 build 17763 + Python 3.7.2 介绍 pipenv 是在 pip 与 virtualenv 基础上发展而来的,弥补了之前 virtualenv 通 ...
- python版本管理工具pyenv和包管理工具pipenv
一.pyenv版本管理工具 pyenv是一个python版本管理工具,可以实现轻松切换多个python版本 它可根据每个用户更改全局python版本,也可以为每个项目指定python版本,还可以管理v ...
- Pipenv: Python包管理神器
Pipenv旨在将最好的包管理机制(bundler, composer, npm, cargo, yarn等等)带到Python中去. 它会为你的项目自动创建和管理virtualenv,也会在安装和移 ...
- Python虚拟环境和包管理工具Pipenv的使用详解--看完这一篇就够了
前言 Python虚拟环境是一个虚拟化,从电脑独立开辟出来的环境.在这个虚拟环境中,我们可以pip安装各个项目不同的依赖包,从全局中隔离出来,利于管理. 传统的Python虚拟环境有virtualen ...
- python 包管理工具Pipenv
Kenneth Reitz的最新工具Pipenv可以用于简化Python项目中依赖项的管理. 它汇集了Pip,Pipfile和Virtualenv的功能,是一个强大的命令行工具. 入门 首先使用pip ...
- python 工具链 虚拟环境和包管理工具 pipenv
Pipenv is a tool that aims to bring the best of all packaging worlds (bundler, composer, npm, cargo, ...
- Mac包管理神器Homebrew
概念 简称brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件,相当于Red hat的yum.Ubuntu的apt-get. 安装命令 ruby -e "$( ...
- Mac包管理神器:Home-brew
最近看到一个大神修改的Homebrew国内脚本,安装非常方便,以前使用国外的经常下载不下来,这个感觉是非常快的. Homebrew 国内自动安装脚本 ,修改原脚本中的 clone 操作为“浅拷贝”(- ...
- 关于Python虚拟环境与包管理你应该知道的事
关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...
随机推荐
- LeetCode 206——链表反转(JAVA)
题目: 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶:你可 ...
- 在react项目当中做导航守卫
距离上一篇文章,似乎已经过去好久了. 确实是最近相对忙了一点,本身是用vue重构之前一个传统的项目,就自己一个人写.而且,在稍微闲暇之余,想着同时用react也重构一遍,也算是对react的学习吧!毕 ...
- Digester库
在之前所学习关于启动简单的Tomcat部分实现的代码中,我们使用一个启动类Bootstrap类 来实例化连接器.servlet容器.wrapper实例.和其他组件,然后调用各个对象的set方法将他们关 ...
- No compiler is provided in this environment. Perhaps you are running on a JR
maven编译项目时出错,提示信息如下: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3 ...
- requests 抓取网站
import requests from requests.exceptions import RequestException import re import json def get_one_p ...
- haproxy + keepalived + mycat 高可用与负载均衡集群配置 centos7
架构如上,但是其实keepalived.haproxy.Mycat都可以多台(比如keepalived.haproxy.Mycat各3台,3台keepalived抢占vip,然后抢到vip的hapro ...
- Nginx作为代理服务之正反代理
Nginx作为代理服务之正反代理 首先什么是代理,就跟明星的经纪人类似,比如作为苍老师经纪人的我,如果你们需要和苍老师拍小电影,可以跟我这个经纪人来商量比如价格啊,时间等相关信息,那么我就作为一个代理 ...
- 3.Struts2-Result
注: 1.在struts.xml文件中使用include标签 可以将另外一个xml文件包含进struts.xml文件中,如: <struts> <constant name=&quo ...
- SpringBoot static修饰的字段/方法如何获取application.yml配置
SpringBoot的application.yml一种特殊的应用场景,一般我们获取application.yml的配置文件只要@Value就可以获取到值了,但是如果是static修饰的字段肯定就不能 ...
- 5、vim编辑器
1.什么是VIM? 理解为windows下面的文本编辑器,比如记事本,比如word文档 2.为什么要学? 因为在后面我们配置的服务,都需要人为修改配置,以便让程序按照我们修改后的指示运行. 1.修改配 ...