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

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

  1. 视频教程-8小时Python零基础轻松入门-Python

    订阅后:请点击此处观看视频课程 视频教程-8小时Python零基础轻松入门-Python 学习有效期:永久观看  学习时长: 525分钟  学习计划:9天 难度:低 「口碑讲师带队学习,让你的问题不过 ...

  2. python数据科学手册_小白入门Python数据科学

    前言 本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据 ...

  3. python3 array为什么不能放不同类型的数据_小白入门Python数据科学全教程lt;一gt;...

    前言 本文讲解了从零开始学习Python数据科学的全过程,涵盖各种工具和方法 你将会学习到如何使用python做基本的数据分析 你还可以了解机器学习算法的原理和使用 说明 先说一段题外话.我是一名数据 ...

  4. c++如何让字符串重复输出_如何入门Python之自学python基础教程送你参考

    随着人工智能的发展,Python近两年也是大火,越来越多的人加入到Python学习大军,对于毫无基础的人该如何入门Python呢?这里整理了一些个人经验和Python入门教程供大家参考. 什么是算法 ...

  5. 爬虫python入门_如何入门Python爬虫?爬虫原理及过程详解

    "入门"是良好的动机,但是可能作用缓慢.如果你手里或者脑子里有一个项目,那么实践起来你会被目标驱动,而不会像学习模块一样慢慢学习. 另外如果说知识体系里的每一个知识点是图里的点,依 ...

  6. anaconda怎么运行python程序_第一个python程序,从安装python环境到人生第一个py脚本运行全过程...

    文章目录 前言一.安装python运行环境 1.官网https://www.python.org下载安装包.exe 2.安装python二.python模块下载 1.配置pip环境变量 2.下载pyt ...

  7. 尚观python培训_尚观Python基础入门视频教程

    Python开发是目前很多朋友选择学习的一门技术,在大家学习的同时,楼主在这里给大家分享了一个运维python视频教程,需要的朋友可以下载看看! [课程目录] 第1部分 python入门 python ...

  8. 尚观python培训_尚观Python基础入门学习,资源教程下载

    课程名称 尚观Python基础入门学习,资源教程下载 课程介绍 Python开发是目前很多朋友选择学习的一门技术,在大家学习的同时,楼主在这里给大家分享了一个运维python视频教程,需要的朋友可以下 ...

  9. 2018年python薪资_最好的Python:2017和2018年至今我最喜欢的文章集

    2018年python薪资 我打算发布此收藏集 (My intention with publishing this collection) Last year I only used Medium ...

最新文章

  1. window下安装Oracle11G安装
  2. python判断正数负数_python判断正负数方式
  3. android模拟按键问题总结[使用IWindowManager.injectKeyEvent方法](转)
  4. 《计算机应用基础实训教程》,《计算机应用基础实训教程》修改稿(文).doc
  5. can't connect local MySql Server though socket /tmp如何解决
  6. linux 安装_linux 安装 powershell
  7. ThinkPHP5学校宿舍管理系统
  8. 谈一谈|如何写好一篇博客
  9. 《大数据之路-阿里巴巴大数据实践》第十六章 数据应用
  10. 第4章第3节:如何插入或删除表格的行与列 [PowerPoint精美幻灯片实战教程]
  11. ghostscript9.26交叉编译
  12. 企业生产管理集成的核心工具—MES管理系统
  13. html表格框线怎么弄实心的,HTML5绘制实心的文本
  14. 【QT】QT菜单栏、状态栏、工具栏
  15. CAD中怎么识别标高范围?CAD标高范围识别技巧
  16. 【星球精选】如何高效构建 Roam 与 theBrain 间细粒度双向链接?
  17. [车联网安全自学篇] ATTACK安全之检测 Android APN 代理
  18. Mysql创建、使用循环函数
  19. php laravel union,教程:Laravel 集合(Collection)的基础用法
  20. 华硕pro系列笔记本,右击文件出现闪退现象解决办法

热门文章

  1. 在MFC程序中增加控制台窗口
  2. Spark提交 指定 kerberos 认证信息
  3. 阿里云能耗宝即将发布,助力中小企业绿色升级,参与碳中和万亿市场
  4. 企业上云如何对SLS日志审计服务进行权限控制
  5. 持续定义SaaS模式云数据仓库+Serverless
  6. 核心系统100%上云!全球最大流量洪峰,阿里云扛住了
  7. 记一次Cassandra Java堆外内存排查经历
  8. 像数据科学家一样思考:12步指南(中)
  9. 全面升级 | 阿里云中间件推出3款新品和3项产品新特性,加速企业中台落地
  10. Medusa 又一个 Shopify 的开源替代品!