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编写分析Python程序性能的工具的教程
Apr 01 Python
Python使用SocketServer模块编写基本服务器程序的教程
Jul 12 Python
Odoo中如何生成唯一不重复的序列号详解
Feb 10 Python
python使用sqlite3时游标使用方法
Mar 13 Python
Python简单实现网页内容抓取功能示例
Jun 07 Python
pandas DataFrame实现几列数据合并成为新的一列方法
Jun 08 Python
windows下搭建python scrapy爬虫框架步骤
Dec 23 Python
Python实现账号密码输错三次即锁定功能简单示例
Mar 29 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
Jul 06 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
python+selenium+PhantomJS抓取网页动态加载内容
Feb 25 Python
Python如何使用bokeh包和geojson数据绘制地图
Mar 21 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
PHP SPL使用方法和他的威力
2013/11/12 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
thinkPHP5.0框架整体架构总览【应用,模块,MVC,驱动,行为,命名空间等】
2017/03/25 PHP
学习thinkphp5.0验证类使用方法
2017/11/16 PHP
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
基于JavaScript实现继承机制之调用call()与apply()的方法详解
2013/05/07 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
Javascript 按位左移运算符使用介绍(
2014/02/04 Javascript
js模拟hashtable的简单实例
2014/03/06 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
ECharts仪表盘实例代码(附源码下载)
2016/02/18 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
2018/04/17 Javascript
vue单页应用在页面刷新时保留状态数据的方法
2018/09/21 Javascript
谈谈JavaScript中super(props)的重要性
2019/02/12 Javascript
微信小程序仿抖音视频之整屏上下切换功能的实现代码
2020/05/24 Javascript
JavaScript冒泡算法原理与实现方法深入理解
2020/06/04 Javascript
实例讲解React 组件生命周期
2020/07/08 Javascript
[05:31]DOTA2英雄梦之声_第04期_光之守卫
2014/06/23 DOTA
[00:35]DOTA2上海特级锦标赛 EG战队宣传片
2016/03/04 DOTA
Python中删除文件的程序代码
2011/03/13 Python
python变量不能以数字打头详解
2016/07/06 Python
Odoo中如何生成唯一不重复的序列号详解
2018/02/10 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
查看python安装路径及pip安装的包列表及路径
2019/04/03 Python
Python爬取破解无线网络wifi密码过程解析
2019/09/17 Python
python利用proxybroker构建爬虫免费IP代理池的实现
2021/02/21 Python
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
如何执行一个shell程序
2012/11/23 面试题
网吧收银员岗位职责
2013/12/14 职场文书
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
公司租车协议书
2015/01/29 职场文书
2015年班组工作总结
2015/04/20 职场文书
详解Flutter自定义应用程序内键盘的实现方法
2022/06/14 Java/Android
Moment的feature导致线上bug解决分析
2022/09/23 Javascript