Pipenv一键搭建python虚拟环境的方法
作者:木子昭 发布时间:2022-07-15 03:49:41
由于python2和python3在部分语法上不兼容, 导致有人打趣道:"Python2和Python3是两门语言"
对于初学者而言, 如果同时安装了python2和python3, 那运行python程序就可能会遇到2和3混用的尴尬
为解决python不同版本混用的尴尬,避免污染系统python的依赖包环境, 我们需要创建虚拟环境, 将python2和python3隔离使用
pipenv的优势:
以前我们搭建虚拟环境需要学习使用virtualenv和virtualenvwrapper,在虚拟环境内管理软件依赖包需要学习使用pip, 而有了pipenv, 前面几个就可以不用学了...
以前我们需要将虚拟环境依赖包的导出为 requirements.txt
, 一旦依赖包变动,就要重新导出,而pipenv会自动帮我们生成 Pipfile
和 Pipfile.lock
, Pipfile会随着项目,当我们安装时只需在 Pipfile
和 Pipfile.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
小技巧: 如果子级目录的父级目录已经创建过虚拟环境, 则子级目录无法创建虚拟目录(子级目录无法生成Pipfile, 子级默认会使用父级的虚拟环境), 如果确实需要在子级目录创建独立的虚拟环境,可以运行 pipenv --where
获取父级虚拟环境的名字, 根据虚拟环境的前半部分名字, 确定父级目录的位置, 然后删除父级目录下的 Pipfile
, Pipfile.lock
, 运行 exit
退出父级虚拟环境,然后回到子目录,运行 pipenv --three
创建子目录的虚拟环境即可
在虚拟环境管理依赖包
安装依赖包 yagmail requests
pipenv install yagmail requests
查看已安装软件
pipenv graph
删除依赖包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对新书要更友好一些,推荐学习~
来源:https://www.jianshu.com/p/1441169b3dbe
猜你喜欢
- 最近写一个爬虫系统,需要用到python的日志记录模块,于是便学习了一下。python的标准库里的日志系统从Python2.3开始支持。只要
- 在前几篇博文中,我们分别采用颜色识别,模板匹配,像素遍历等方法实现了棋子和棋盘的定位,具体内容可以参见我的前面的文章内容,在这一篇中,我们来
- 本文实例讲述了Python读取一个目录下所有目录和文件的方法。分享给大家供大家参考,具体如下:这里介绍的是刚学python时的一个读取目录的
- Oracle text是Oracle的全文检索技术,是9i版本标准版和企业版的一部分。Oracle text使用标准的sql语言索引、查找、
- 不少小伙伴认为,直接去操作excel,比我们利用各种代码数据去处理,直接又简单,不那么花里胡哨,但是在代码上,处理数据,直接的软件操作是行不
- 以Python 3.x版本为主一、比较运算符比较运算符主要是True和Fals两个值编号比较运算符说明1==等于2!=<>(Py
- 前言:record类型,这是一种新引用类型,而不是类或结构。record与类不同,区别在于record类型使用基于值的相等性。例如:publ
- Python 2.x 很快就要 失去官方支持 了,尽管如此,从 Python 2 迁移到 Python 3 却并没有想象中那么难。我在上周用
- overflow:hidden这个CSS样式是大家常用到的CSS样式,但是大多数人对这个样式的理解仅仅局限于隐藏溢出,而对于清除浮动这个含义
- 一、uni.navigateTo(OBJECT)保留当前页面,跳转到应用内的某个页面,使用uni.navigateBack可以返回到原页面u
- JavaScript 读取、删除 Cookie 的函数* * WebFXCookie class */ fun
- 需求描述在利用numpy进行数据分析时,常有的一个需求是:根据已知的数组生成新数组。这个问题又可以分为两类:根据筛选条件生成子数组;根据变换
- 为了自定义一个模板标签,你需要告诉Django当遇到你的标签时怎样进行这个过程。当Django编译一个模板时,它将原始模板分成一个个 节点
- 代码演示如下:方法一<?php function encryptDecrypt($key, $string, $decrypt){
- 前言:本文的主要内容是介绍Python中的列表及其方法的使用,涉及到的方法包括对列表元素进行修改、添加、删除、排序以及求列表长度等,此外还介
- 定义神经网络继承nn.Module类;初始化函数__init__:网络层设计;forward函数:模型运行逻辑。class NeuralNe
- 当点了链接后,跳出的网页地址是https://www.aspxhome.com/ 或https://www.cidianwang.
- 前言大家好,我是小张~记得小时候,家里只有一个钟表用来看时间(含有时针、分针、秒针的那种),挂在墙上哒哒哒响个不停,现在生活条件好了、基本人
- 在Thread和Process中,应当优选Process,因为Process更稳定,而且,Process可以分布到多台机器上,而Thread
- 因工作需要,要将存放在sql server数据库中的数据全部导入到mysql数据库中,在网上搜集相关资料,找到两种方法,现在分别谈谈对他们的