Pipenv一键搭建python虚拟环境的方法


Posted in Python onMay 22, 2018

由于python2和python3在部分语法上不兼容, 导致有人打趣道:"Python2和Python3是两门语言"

对于初学者而言, 如果同时安装了python2和python3, 那运行python程序就可能会遇到2和3混用的尴尬

为解决python不同版本混用的尴尬,避免污染系统python的依赖包环境, 我们需要创建虚拟环境, 将python2和python3隔离使用

pipenv的优势:

以前我们搭建虚拟环境需要学习使用virtualenv和virtualenvwrapper,在虚拟环境内管理软件依赖包需要学习使用pip, 而有了pipenv, 前面几个就可以不用学了...

以前我们需要将虚拟环境依赖包的导出为 requirements.txt , 一旦依赖包变动,就要重新导出,而pipenv会自动帮我们生成 PipfilePipfile.lock , Pipfile会随着项目,当我们安装时只需在 PipfilePipfile.lock 所在的目录下运行 pipenv install

安装pipenv

方法一: ubuntu用apt安装

sudo apt install software-properties-common python-software-properties
sudo add-apt-repository ppa:pypa/ppa
sudo apt update
sudo apt install pipenv

方法二: windows用pip安装

pip install pipenv

方法三: MacOS直接使用brew安装

brew install pipenv

快速创建并进入虚拟环境

前提条件: 系统已安装python2和python3

# 创建python3环境
pipenv --three
# 创建python2环境
pipenv --two
# 在上一步新建环境的目录下,运行此命令才有效
pipenv shell

Pipenv一键搭建python虚拟环境的方法 

小技巧: 如果子级目录的父级目录已经创建过虚拟环境, 则子级目录无法创建虚拟目录(子级目录无法生成Pipfile, 子级默认会使用父级的虚拟环境), 如果确实需要在子级目录创建独立的虚拟环境,可以运行 pipenv --where 获取父级虚拟环境的名字, 根据虚拟环境的前半部分名字, 确定父级目录的位置, 然后删除父级目录下的 Pipfile , Pipfile.lock , 运行 exit 退出父级虚拟环境,然后回到子目录,运行 pipenv --three 创建子目录的虚拟环境即可

在虚拟环境管理依赖包

安装依赖包 yagmail requests

pipenv install yagmail requests

查看已安装软件

pipenv graph

Pipenv一键搭建python虚拟环境的方法

删除依赖包yagmail

pipenv uninstall yagmail

退出虚拟环境

exit

扩展命令(不看也没关系)

查看虚拟环境python解释器所在位置

pipenv --py

查看虚拟环境所在位置

pipenv --venv

使用更底层的命令 pip freeze

pipenv run pip freeze

只在安装开发阶段使用的软件包(和npm类似)

pipenv install pytest --dev

安装Pipfile.lock的所有包(完整移植开发环境)

pipenv sync

小结:

pipenv借鉴了npm管理包的方式, 与virtualenv和virtualenvwrapper相比, pipenv对新书要更友好一些,推荐学习~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python选择排序算法的实现代码
Nov 21 Python
使用 Python 获取 Linux 系统信息的代码
Jul 13 Python
Python lxml模块安装教程
Jun 02 Python
python if not in 多条件判断代码
Sep 21 Python
Python基于identicon库创建类似Github上用的头像功能
Sep 25 Python
一篇文章读懂Python赋值与拷贝
Apr 19 Python
Python 文本文件内容批量抽取实例
Dec 10 Python
python提取具有某种特定字符串的行数据方法
Dec 11 Python
python 2.7 检测一个网页是否能正常访问的方法
Dec 26 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
Jan 30 Python
Form表单及django的form表单的补充
Jul 25 Python
python实现简易名片管理系统
Apr 11 Python
PyTorch线性回归和逻辑回归实战示例
May 22 #Python
python自动查询12306余票并发送邮箱提醒脚本
May 21 #Python
python利用smtplib实现QQ邮箱发送邮件
May 20 #Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 #Python
Python读取本地文件并解析网页元素的方法
May 21 #Python
详解Python中的四种队列
May 21 #Python
Python实现的当前时间多加一天、一小时、一分钟操作示例
May 21 #Python
You might like
PHP4之真OO
2006/10/09 PHP
PHP中,文件上传
2006/12/06 PHP
PHP系列学习之日期函数使用介绍
2012/08/18 PHP
sae使用smarty模板的方法
2013/12/17 PHP
php实现json编码的方法
2015/07/30 PHP
php判断str字符串是否是xml格式数据的方法示例
2017/07/26 PHP
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
JavaScript 通过模式匹配实现重载
2010/08/12 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
js实现常用排序算法
2016/08/09 Javascript
JS实现显示带倒影的图片横排居中放大展示特效实例【测试可用】
2016/08/23 Javascript
ionic组件ion-tabs选项卡切换效果实例
2016/08/27 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
JS实现重新加载当前页面
2016/11/29 Javascript
JavaScript算法教程之sku(库存量单位)详解
2017/06/29 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
Django如何实现内容缓存示例详解
2017/09/24 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
顶级宝石首饰网络零售商:Angara
2016/10/25 全球购物
阿联酋网上花店:Ferns N Petals
2018/02/14 全球购物
中软Java笔试题
2012/11/11 面试题
一封普通求职者的求职信
2013/11/20 职场文书
幼儿园家长评语
2014/02/10 职场文书
2014入党积极分子批评与自我批评思想报告
2014/10/06 职场文书
老员工辞职信范文
2015/05/12 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL