开发工具|给你的项目买份保险:Python虚拟环境
读完需要
9
分钟
1. 什么是虚拟环境?
虚拟环境的意义,就如同 虚拟机 一样,它可以实现不同环境中Python依赖包相互独立,互不干扰。这在一定程度的意义上,给了我们的项目一份很有力的保障。在这里,我把它戏称为「保险」。全网唯一。
举个例子吧。
假设我们的电脑里有两个项目,他们都用到同一个第三方包,本来一切都顺利。但是由于某种原因,项目B由于某些原因要使用这个第三方包的一些新特性(新版本才有),而如果就这样贸然升级了,对项目A的影响我们无法评估,这个时候我们就特别需要有一种解决方案可以让项目A和B,处于两个不同的Python环境中。互不影响。
为了方便大家对虚拟环境有个认识,我列举了下其优点:
使不同应用开发环境独立
环境升级不影响其他应用,也不会影响全局的python环境
可以防止系统中出现包管理混乱和版本的冲突
市场上管理 Python 版本和环境的工具有很多,这里列举几个:
p:非常简单的交互式 python 版本管理工具。
pyenv:简单的 Python 版本管理工具。
Vex:可以在虚拟环境中执行命令。
virtualenv:创建独立 Python 环境的工具。
virtualenvwrapper:virtualenv 的一组扩展。
工具很多,但个人认为最好用的,当属 virtualenvwrapper,推荐大家也使用。
2.virtualenv
由于 virtualenvwrapper 是 virtualenv 的一组扩展,所以如果要使用 virtualenvwrapper,就必须先安装 virtualenv。
安装
pip install virtualenv# 检查版本virtualenv --version
由于virtualenv创建虚拟环境是在当前环境下创建的。所以我们要准备一个专门存放虚拟环境的目录。(以下操作在Linux在完成,windows相对简单,请自行完成,有不明白的请qq与我联系。)
创建
准备目录并进行$ mkdir -p /home/wangbm/Envs$ cd !$# 创建虚拟环境(按默认的Python版本)# 执行完,当前目录下会有一个my_env01的目录$ virtualenv my_env01# 你也可以指定版本$ virtualenv -p /usr/bin/python2.7 my_env01$ virtualenv -p /usr/bin/python3.6 my_env02# 你肯定觉得每次都要指定版本,相当麻烦吧?# 在Linux下,你可以把这个选项写进入环境变量中$ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python2.7" >> ~/.bashrc
在这里还是要推荐下我自己建的Python开发学习群:725479218,群里都是学Python开发的,如果你正在学习Python ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2018最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴
进入/退出
$ cd /home/wangbm/Envs# 进入
$ source my_env01/bin/activate# 退出$ deactivate
删除虚拟环境,只需删除对应的文件夹就行了。并不会影响全局的Python和其他环境。
$ cd /home/wangbm/Envs$ rm -rf my_env01
注意:创建的虚拟环境,不会包含原生全局环境的第三方包,其会保证新建虚拟环境的干净。
如果你需要和全局环境使用相同的第三方包。可以使用如下方法:
# 导出依赖包$ pip freeze > requirements.txt
# 安装依赖包$ pip install -r requirements.txt
3 . virtualenvwrapper
virtualenv 虽然已经相当好用了,可是功能还是不够完善。
你可能也发现了,要进入虚拟环境,必须得牢记之前设置的虚拟环境目录,如果你每次按规矩来,都将环境安装在固定目录下也没啥事。但是很多情况下,人是会懒惰的,到时可能会有很多个虚拟环境散落在系统各处,你将有可能忘记它们的名字或者位置。
还有一点,virtualenv 切换环境需要两步,退出 -> 进入。不够简便。
为了解决这两个问题,virtualenvwrapper就诞生了。
安装
# 安装 - Linuxpip install virtualenvwrapper
# 安装 - Windowspip install virtualenvwrapper-win
配置先find一下virtualenvwrapper.sh文件的位置
find / -name virtualenvwrapper.sh
# /usr/bin/virtualenvwrapper.sh
在~/.bashrc 文件新增
export WORKON_HOME=$HOME/.virtualenvsexport PROJECT_HOME=$HOME/workspaceexport VIRTUALENVWRAPPER_SCRIPT=/usr/bin/virtualenvwrapper.shsource /usr/bin/virtualenvwrapper.sh
实战演示
接下来,一起来看看,如何使用在我们的开发中使用我们的虚拟环境呢
通常我们使用的场景有如下几种
交互式中
PyCharm中
工程中
接下来,我将一一展示。
交互式中
先对比下,全局环境和虚拟环境的区别,全局环境中有requests包,而虚拟环境中并未安装。当我们敲入 workon my_env01,前面有 my_env01的标识,说明我们已经处在虚拟环境中。后面所有的操作,都将在虚拟环境下执行。
工程项目中
我们的工程项目,都有一个入口文件,仔细观察,其首行可以指定Python解释器。
倘若我们要在虚拟环境中运行这个项目,只要更改这个文件头部即可。
现在我还是以,import requests 为例,来说明,是否是在虚拟环境下运行的,如果是,则和上面一样,会报错。
文件内容:
#!/root/.virtualenvs/my_env01/bin/pythonimport requestsprint "ok"
运行前,注意添加执行权限。
$ chmod +x ming.py
好了。来执行一下
$ ./ming.py
发现和预期一样,真的报错了。说明我们指定的虚拟环境有效果。
PyCharm中
点击 File - Settings - Project - Interpreter
点击小齿轮。如图点击添加,按提示添加一个虚拟环境。然后点 OK 就可以使用这个虚拟环境,之后的项目都会在这个虚拟环境下运行。
好啦!以上就是本期的全部内容。
学完本章,快去为你的项目买一份「保险」吧。
开发工具|给你的项目买份保险:Python虚拟环境的更多相关文章
- 使用Android ADT最新开发工具后,新建项目出现appcompat v7 他是什么?
做Android开发的朋友最近会发现,更新ADT至22.6.0版本之后,创建新的安装项目,会出现appcompat_v7的内容.并且是创建一个新的内容就会出现.这到底是怎么回事呢?原来appcompa ...
- IDEA开发工具使用 git 创建项目、拉取分支、合并分支
转载自:https://blog.csdn.net/qq_39470733/article/details/80366435 工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有 ...
- SharePoint 2013常用开发工具分享
众所周知,一款好的开发工具不仅能提高项目开发效率,而且能够协助开发人员简化开发流程.本文汇总几款SharePoint 2013开发常用开发工具,希望能够对大家有所帮助.如果您有更好的工具,没有包含在本 ...
- 微信小程序开发工具使用与设计规范(二)
[未经作者本人同意,请勿以任何形式转载] 上一篇文章主要分析了微信小程序应用场景和优劣势.本篇你可以学习到: 如何使用小程序开发工具写一个Hello World 微信小程序设计规范 微信小程序项目结构 ...
- oschina 开发工具
开发工具 29反编译工具 26持续集成系统 19SQL注入工具 139Git开源工具 138Java开发工具 43.NET开发工具 85PHP开发工具 96C/C++开发工具 70Ruby/Rails ...
- SharePoint 2013常用开发工具
SharePoint 2013常用开发工具分享 2014-04-01 00:59 by jv9, 589 阅读, 1 评论, 收藏, 编辑 众所周知,一款好的开发工具不仅能提高项目开发效率,而且能够协 ...
- 跨端开发技术 | 拼团商城项目同时开发app和小程序的要点
此项目为拼团商城类型,主要功能包括商品分类.商品详情.商品搜索.拼团.订单管理等. 项目源码在 https://github.com/apicloudcom/group-ec 仓库的 widget 目 ...
- Python开发工具搭建-Pycharm
PyCharm2017. 3.X专业版 安装使用. 注册码激活 本文以 Windows系统 为例: 1.开发工具获取及下载 Anaconda(Python 的集成工具 ) 下载地址: https:// ...
- IntelliJ IDEA 开发工具项目maven管理
今天自己重新部署一下intellij下的项目开发环境,顺便把maven管理项目jar包的方法梳理一下 (1)首先下载apache-maven-3.0.4版本的maven,我自己解压在D:\maven\ ...
随机推荐
- encodeURIComponent编码时为什么要编码两次
Why 要对url进行编码? 当使用地址栏提交查询参数时,如果不编码,非英文字符会按照操作系统的字符集进行编码提交到服务器,服务器会按照配置的字符集进行解码,所以如果两者不一致就会导致乱码. Wh ...
- pip install 报错
问题描述,在使用pip安装django相关软件包时,提示错误如下: [root@test4 install]# pip install django==1.6 Downloading/unpackin ...
- Microsoft Dynamics CRM 9.0 OP 版本 移动端
本次OP 版本做了架调整,新的移动端基本可以满足客户需求,其内容自己可配置选择,满足了一般企业的应用处理. 具体操作如下: 1.登录APP选择应用(我使用手机浏览器) 2.打开默认应用,现在就一个木得 ...
- Salesforce小知识:累计汇总字段类型
累计汇总字段类型的定义 Salesforce中可以在两个对象之间建立关系.一个对象的某一条记录可以有若干条相关联的其他对象记录. 累计汇总字段可以将这些相关联的记录中的某些字段值汇总起来,显示给用户. ...
- loadrunner 脚本开发-字符串编码转换
字符串编码转换 by:授客 QQ:1033553122 相关函数 lr_convert_string_encoding函数 功能:字符串编码转换 原型: int lr_convert_string ...
- ScrollView与ListView的事件冲突
布局文件 当ListView嵌套在ScrollView中时,会发生冲突,导致ListView控件的拉动效果消失‘ 解决办法: 重写ListView的onTouchEvent(),并在返回前调用getP ...
- 简单的TabLayout+Fragment选项卡
TabLayout属性: app:tabIndicatorColor="#fff" //下方滚动的下划线颜色 app:tabIndicatorHeight="10dp& ...
- 11-OpenLDAP主从同步
OpenLDAP主从同步 阅读视图 部署环境 OpenLDAP服务器初始化 配置主服务器同步策略 配置从服务器 OpenLDAP主从同步验证 故障诊断 1. 部署环境 本文以两台服务器为蓝本演示其同步 ...
- python第二天 列表、元组
今天学习了列表.元组相关的知识:与C中的数组列表相似,元组为只读列表: 以及切片相关操作: #!usr/bin/env python #-*-coding:utf-8-*- # Author calm ...
- win10下解压版mysql-8.0.12安装教程
内容转载于:https://blog.csdn.net/hust_hqq/article/details/80572133 在他之上添加了一个:服务名无效的解决方法 1.官网下载安装包 网址:http ...