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的Tornado框架中的协程异步实现原理
Apr 23 Python
详解Python 数据库 (sqlite3)应用
Dec 07 Python
Python批量发送post请求的实现代码
May 05 Python
在Python中输入一个以空格为间隔的数组方法
Nov 13 Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 Python
在pycharm中配置Anaconda以及pip源配置详解
Sep 09 Python
Django文件上传与下载(FileFlid)
Oct 06 Python
python实现图片插入文字
Nov 26 Python
Python基本类型的连接组合和互相转换方式(13种)
Dec 16 Python
Python 面向对象之类class和对象基本用法示例
Feb 02 Python
Python调用C/C++的方法解析
Aug 05 Python
Python实现数据的序列化操作详解
Jul 07 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
ThinkPHP3.1新特性之多层MVC的支持
2014/06/19 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
javascript Excel操作知识点
2009/04/24 Javascript
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
2010/03/20 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
jQuery ajax serialize()方法的使用以及常见问题解决
2013/01/27 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
JavaScript实现两个Table固定表头根据页面大小自行调整
2014/01/03 Javascript
jquery 显示*天*时*分*秒实现时间计时器
2014/05/07 Javascript
js数组的操作指南
2014/12/28 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
2015/10/23 Javascript
javascript实现input file上传图片预览效果
2015/12/31 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
JS实现向iframe中表单传值的方法
2017/03/24 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
python time模块用法实例详解
2014/09/11 Python
用ReactJS和Python的Flask框架编写留言板的代码示例
2015/12/19 Python
python爬虫的工作原理
2017/03/05 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
python中lambda()的用法
2017/11/16 Python
Python内置函数—vars的具体使用方法
2017/12/04 Python
解决pandas中读取中文名称的csv文件报错的问题
2018/07/04 Python
python opencv 二值化 计算白色像素点的实例
2019/07/03 Python
python内存监控工具memory_profiler和guppy的用法详解
2019/07/29 Python
Window版下在Jupyter中编写TensorFlow的环境搭建
2020/04/10 Python
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
电钳专业个人求职信
2014/01/04 职场文书
2016公司年会通知范文
2015/04/25 职场文书
基于Python实现一个春节倒计时脚本
2022/01/22 Python
Redis之RedisTemplate配置方式(序列和反序列化)
2022/03/13 Redis
动画「进击的巨人」第86话播出感谢绘公开
2022/03/21 日漫