快速运行python虚拟环境_快速入门Python 最新最流行的pipenv虚拟环境

2018的PyCon把最新型最先进的Python虚拟环境pipenv吵得火热。看了下介绍感觉真的很好用,它在virtualenv的基础上包装了一些更便捷的功能,解决了很多很多virtualenv欠缺的事情。

简单说,pipenv就是把pip和virtualenv包装起来的一个便携工具。

它不会在你的项目文件夹里生成一大堆东西,只有两个文本文件:

Pipfile, 简明地显示项目环境和依赖包。

Pipfile.lock, 详细记录环境依赖,并且利用了hash算法保证了它完整对应关系。只在你使用pipenv lock命令后才出现。

安装

Mac安装很简单,只要用Homebrew:

$ brew install pipenv

Linux的话,是用pip安装:

$ pip install --user pipenv

安装好后,终端里还调取不了命令,因为它现在只是个包。

需要先找到它的真是路径,然后为了方便把它加到bash或zsh等shell里面:

# 先获取python包的位置

$ python -m site --user-base

比如我的显示在/home/pi/.local,那么pipenv就藏在/home/pi/.local/bin里。

所以需要打开shell的设置文件,比如bash的话就编辑~/.bash_profile, zsh的话就编辑~/.zshrc,在里面把刚才查到的包路径存进去:

alias pipenv="home/pi/.local/bin/pipenv"

注意:我没有像其他人一样整个export进去,因为不知道为什么树莓派里面的zsh使用不来这个。

创建虚拟环境

在某个文件夹创建一个Python3环境:

# 泛指python的版本

$ pipenv --three

# 或者,特指某个python版本

$ pipenv --python 3.5

# 或者,特指某个位置的python

$ pipenv --python

然后就会显示如下动态,可以看出来,pipenv调用了virtualenv,从本机把Python3环境拷贝一份到某个本机位置,然后在你的项目文件夹里只创建了两个文件Pipfile和Pipfile.lock,记录了所有你这个项目需要的环境配置,内容极其简单易懂:

显示当前虚拟环境的储存位置

$ pipenv --venv

运行环境

运行虚拟环境(无需进入特定shell即可按照该环境运行脚本):

$ pipenv run python xxx.py

进入环境

进入虚拟环境:

# 进入虚拟环境

$ pipenv shell

# 退出虚拟环境

$ exit

其实进入pipenv虚拟环境,本质上就是virtualenv的source ./bin/activate动作,只是使用不一样。进入后,你会发现用deactivate也是能生效的。但是:

注意:进入pipenv环境后千万不要用deactivate退出,而应该用exit退出。否则你再进去这个环境就会产生错误:

Shell for UNKNOWN_VIRTUAL_ENVIRONMENT already activated.

No action taken to avoid nested environments.

安装packages包

$ pipenv install

你需要知道的是,进入pipenv虚拟环境后,你还是可以用pip install来安装包的,也能正常使用,因为virtualenv就是这样做的。

但是,这样你就不算使用了pipenv策略了,如果你要在项目文件夹里的Pipfile记录所有项目需要的依赖环境,就应该放弃使用pip install而使用pipenv install,这样你的Pipfile就会精确记录所有需要的依赖。

重新安装所有packages:

有时候需要冲github上clone项目,下载好后,只需要一句话就可以完成创建环境:

# 根据Pipfile中的描述安装所有依赖

$ pipenv install

# 或者,根据Pipfile.lock中的描述安装所有依赖

$ pipenv install --ignore-pipfile

# 或者,只安装dev组的依赖

$ pipenv install --dev

# 或者,根据曾经在pip上导出requirements.txt安装依赖

$ pipenv install -r

按照树形结构显示当前环境的依赖关系:

$ pipenv graph

然后就会显示出如下效果:

删除虚拟环境:

# 删除某个包

pipenv uninstall

# 删除整个环境

$ pipenv --rm

pipenv lock时遇到的SSL Error

错误反馈如下:

Pipfile.lock not found, creating…

Locking [dev-packages] dependencies…

Locking [packages] dependencies…

usr/local/Cellar/pipenv/2018.5.18/libexec/lib/python3.6/site-packages/pipenv/vendor/requests/sessions.py", line 508, in request

resp = self.send(prep, **send_kwargs)

File "/usr/local/Cellar/pipenv/2018.5.18/libexec/lib/python3.6/site-packages/pipenv/vendor/requests/sessions.py", line 618, in send

r = adapter.send(request, **kwargs)

File "/usr/local/Cellar/pipenv/2018.5.18/libexec/lib/python3.6/site-packages/pipenv/vendor/requests/adapters.py", line 506, in send

raise SSLError(e, request=request)

requests.exceptions.SSLError: HTTPSConnectionPool(host='pypi.org', port=443): Max retries exceeded with url: /pypi/pyobjc-framework-netfs/json (Caused by SSLError(SSLError(1, u'[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)'),))

最佳解决方案是:

$ pip install pyopenssl

因为这种SSL Error在其他地方也常见,一般都是没有在环境里安装pyopenssl的问题。所以不管你在哪个环境,如果出现这个SSL问题,就先装pyopenssl解决。

注意:不要用pipenv install pyopenssl,因为你真的不想在每个环境里都重新装一遍这个,干脆把它撞到本机:$ pip install pyopenssl.

常见错误操作

不要在pipenv shell里面运行pipenv install

不要在pipenv shell里面运行deactivate

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php中$stu_by,PHP基础案例二:计算学生年龄

一、需求分析为了方便、准确、快捷的展示学的年龄,系统通常根据学生的出生日期进行自动计算。下面请利用PHP变量分别保存学生的年月日,并通过PHP中的data函数获取当前年月日,最后计算出学生的年龄。例如:出生年月日为:…

1273 - Unknown collation: 'utf8mb4_0900_ai_ci'

使用navicate12运行sql文件出错 报错: [ERR] 1273 - Unknown collation: ‘utf8mb4_0900_ai_ci’ 1 报错原因: 生成转储文件的数据库版本为8.0,要导入sql文件的数据库版本为5.6,因为是高版本导入到低版本,引起1273错误 解决方法&#xff1…

iPhone11首批用户评价实属翻车现场;据悉,谷歌宣布投资30亿欧元扩大欧洲数据中心……...

关注并标星星CSDN云计算极客头条:速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 微软说:杀手机器…

阿里七层流量入口 Tengine硬件加速探索之路

摘要: Tengine在软件层面已经有了深度的调试和优化经验,但是在硬件层面,通用处理器(CPU)已经进入了摩尔定律,有了瓶颈。而在业务量突飞猛进的当下,如何利用硬件来提升性能,承载双11等…

新增16条设计规约!阿里巴巴Java开发手册(详尽版)开放下载!

摘要:2018年6月,《阿里巴巴Java开发手册》再次刷新代码规范认知,我们新增了16条设计规约!现免费开放下载,不可错过!《阿里巴巴Java开发手册》是阿里内部Java工程师所遵循的开发规范,涵盖编程规约…

重构碎片化知识_day22重构力-思维导图:让碎片化知识的零存整取

课程文稿你好,我是导图郡主潘宝苹。你是否每天通过微信群、朋友圈、各种头条、手机报、新闻网站等多种渠道获取信息。在吃饭时看手机,在坐公交车时刷微博,睡觉前还翻一翻好友的朋友圈不愿放下手机?我们生活在一个信息爆炸的年代&a…

受困于敏捷开发的数据与架构?肿么办?

戳蓝字“CSDN云计算”关注我们哦!译|Lorraine Lo文|Isaac Sacolick来源|InfoWorld网站如今企业强调敏捷开发不是一天两天,但在此过程中敏捷团队通常都会面临的一大挑战就是如何定义以及遵循开发中数据架构的模式和标准这一系列问题。人们之所以认为推动数…

Vue + Spring Boot 项目实战(三):使用IntelliJ IDEA快速生成 Vue.js 项目

文章目录一、使用idea Vue插件生成项目结构1.1. Create New Project1.2. 设置项目地址1.3. 确认项目名称1.4. 项目描述1.5. 作者信息1.6. 编译模板1.7. 安装路由二、安装node_modules模块三、启动项目四、Vue 项目结构分析4.1. 概览4.2. index.html4.3. App.vue4.4. main.js4.5…

沙漠种水稻,88岁的袁隆平又创造奇迹!他参与的“袁米”还有个大计划

摘要: 今年88岁的袁隆平说,他退休之前想看到两件事情:一件是杂交稻大面积亩产1200公斤,另一件是海水稻研发成功。 这几天,关于海水稻的话题再次成为热点。 上周,在两院院士大会上,海水稻和杂交水…

八年磨一剑,阿里云ApsaraDB for HBase2.0正式上线

摘要: ApsaraDB for HBase2.0于2018年6月6日即将正式发布上线啦! 它是基于社区HBase2.0稳定版的升级,也是阿里HBase多年的实践经验和技术积累的持续延伸,全面解决了旧版本碰到的核心问题,并做了很多优化改进&#xff0…

oracle 12.2 启用分片,关于Oracle Sharding,你想知道的都在这里

编辑手记:随着Oracle12.2的发布,Sharding技术也逐渐变得越来越强大,关于Sharding,你所关心的问题的答案,可能都在这里。注:本文来自Oracle FAQ文档翻译相关阅读:什么是Oracle ShardingOracle Sharding是为O…

看完这篇还不会kafka,我跪榴莲!

戳蓝字“CSDN云计算”关注我们哦!Kafka 对外使用 Topic 的概念,生产者往 Topic 里写消息,消费者从中读消息。为了做到水平扩展,一个 Topic 实际是由多个 Partition 组成的,遇到瓶颈时,可以通过增加 Partiti…

软件开发实训需要用到的算法和结构_软件开发实习个人总结

软件开发实习个人总结软件开发实习不仅可以让我们掌握技术知识,更重要的是学习到很多新的东西。以下是软件开发实习个人总结,欢迎阅览!软件开发实习个人总结1这次实训使我们明白我们所欠缺的不仅仅是技术知识,更重要的是有一种处理事情的方法…

Vue + Spring Boot 项目实战(四):前后端结合测试(登录页面开发)

前面我们已经完成了前端项目 DEMO 的构建,这一篇文章主要目的如下: ①打通前后端之间的联系,为接下来的开发打下基础 ②登录页面的开发(无数据库情况下) 文章目录一、后端项目创建1.1. 项目/包名称1.2. web依赖1.3. 运…

探秘盒马机器人餐厅:老外目瞪口呆,90岁奶奶狂点赞

摘要: “菜来了。”一台小车停在餐桌旁,“张开”透明盒盖,瓮声瓮气的机器声提示取餐,它的“肚子”里,是一条热腾腾的清蒸鱼。 刚刚点菜的顾客兴奋地宣布,从下单到拿到菜,只花了11分钟。此时不到…

【漫画】AI小猪的一生

摘要: 6月7日,在上海云栖大会上,阿里云发布ET农业大脑。希望将人工智能与农业深入结合,目前已应用于生猪养殖、苹果及甜瓜种植,具备数字档案生成、全生命周期管理、智能农事分析、全链路溯源等功能。AI可以记录猪完整的…

oracle数据库并行数限制,Oracle数据库并行处理技术详解(上)

Oracle数据库并行处理技术是数据库的一项核心技术,它使组织能够高效地管理和访问TB级的数据。如果不能提供高效的Oracle数据库并行处理技术,这些大型数据库(通常用于数据仓库但也越来越多地出现在业务系统中)将不会存在。简而言之,并行处理就…

tcp实时传输kafka数据_tcp怎么传输大数据

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":7,"count":7}]},"card":[{"des":"阿里云实时计算(Alibaba Cloud Realtime Com…

苹果手机数据线充不了电_手机充电器充不了电?其实4招就能解决

无论科技有多么发达,智能手机怎么样变化,至少就目前使用的智能手机上来看,使用手机就离不开"电"。哪怕是即将开售的折叠手机,也还是需要充电才能够正常使用。所以说,对于是手机而言,"有电&q…

Vue + Spring Boot 项目实战(五):数据库的引入

文章目录一、引入数据库1.安装数据库2. 安装mysql3. MySQL客户端4. .使用 Navicat 创建数据库与表二、使用数据库验证登录1.项目相关配置2.登录控制器2.1. User 类2.2. UserDAO2.3. UserService2.4. LoginController2.5. 测试一、引入数据库 1.安装数据库 官网地址&#xff1…