当前位置: 首页 > news >正文

Python之 Virtualenv简明教程

virtualenv通过创建独立Python开发环境的工具, 来解决依赖、版本以及间接权限
问题. 比如一个项目依赖Django1.3 而当前全局开发环境为Django1.7, 版本跨度过大, 导致不兼容使项目无法正在运行, 使用virtualenv可以解决这些问题.

virtualenv创建一个拥有自己安装目录的环境, 这个环境不与其他虚拟环境共享库, 能够方便的管理python版本和管理python库

1. 安装Virtualenv


使用pip安装Virtualenv, 使用过python的都应该知道pip包管理神器吧, 即使不知道, 网站也有大把的教程, 不过推荐查看官方安装指南

$ pip install virtualenv
//或者由于权限问题使用sudo临时提升权限
$ sudo pip install virtualenv

2. virtualenv基本使用


现在开始使用virtualenv管理python环境

➜  Test git:(master) ✗ virtualenv ENV  #创建一个名为ENV的目录, 并且安装了ENV/bin/python, 创建了lib,include,bin目录,安装了pip
New python executable in 
Installing setuptools, pip...done.
➜  Test git:(master) ✗ cd ENV
➜  ENV git:(master) ✗ ll
drwxr-xr-x  14 andrew_liu  staff  476 12  8 08:49 bin
drwxr-xr-x   3 andrew_liu  staff  102 12  8 08:49 include
drwxr-xr-x   3 andrew_liu  staff  102 12  8 08:49 lib
  • lib,所有安装的python库都会放在这个目录中的lib/pythonx.x/site-packages/
  • bin,bin/python是在当前环境是使用的python解释器

如果在命令行中运行virtualenv --system-site-packages ENV, 会继承/usr/lib/python2.7/site-packages下的所有库, 最新版本virtualenv把把访问全局site-packages作为默认行为
default behavior.

2.1. 激活virtualenv

#ENV目录下使用如下命令
➜  ENV git:(master) ✗ source ./bin/activate  #激活当前virtualenv
(ENV)➜  ENV git:(master) ✗ #注意终端发生了变化
#使用pip查看当前库
(ENV)➜  ENV git:(master) ✗ pip list pip (1.5.6) setuptools (3.6) wsgiref (0.1.2) #发现在只有这三个 pip freeze #显示所有依赖 pip freeze > requirement.txt #生成requirement.txt文件 pip install -r requirement.txt #根据requirement.txt生成相同的环境 

2.2. 关闭virtualenv

使用下面命令

$ deactivate

2.3. 指定python版本

可以使用-p PYTHON_EXE选项在创建虚拟环境的时候指定python版本

#创建python2.7虚拟环境
➜  Test git:(master) ✗ virtualenv -p /usr/bin/python2.7 ENV2.7
Running virtualenv with interpreter /usr/bin/python2.7 New python executable in ENV2.7/bin/python Installing setuptools, pip...done. 
#创建python3.4虚拟环境
➜  Test git:(master) ✗ virtualenv -p /usr/local/bin/python3.4 ENV3.4
Running virtualenv with interpreter /usr/local/bin/python3.4
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.4'
New python executable in ENV3.4/bin/python3.4 Also creating executable in ENV3.4/bin/python Installing setuptools, pip...done. 

到此已经可以解决python版本冲突问题和python库不同版本的问题

3. 其他


3.1. 生成可打包环境

某些特殊需求下,可能没有网络, 我们期望直接打包一个ENV, 可以解压后直接使用, 这时候可以使用virtualenv -relocatable指令将ENV修改为可更改位置的ENV

#对当前已经创建的虚拟环境更改为可迁移
➜  ENV3.4 git:(master) ✗ virtualenv --relocatable ./
Making script ./bin/easy_install relative
Making script ./bin/easy_install-3.4 relative
Making script ./bin/pip relative
Making script ./bin/pip3 relative
Making script ./bin/pip3.4 relative

3.2. 获得帮助

$ virtualenv -h

当前的ENV都被修改为相对路径, 可以打包当前目录, 上传到其他位置使用

这并不能使虚拟环境跨平台使用

4. 参考链接


virtualenv官方文档

 

转载于:https://www.cnblogs.com/andy6/p/10383975.html

相关文章:

  • dva中组件的懒加载
  • 「澳洋主数据项目」主数据促企业变革
  • phpstudy中apache的默认根目录的配置
  • 面试总结之人工智能AI(Artificial Intelligence)/ 机器学习(Machine Learning)
  • ActiveMQ之Linux下安装
  • springboot读取配置文件属性
  • PAT A1017 优先队列
  • 后端_ThinkPHP5
  • 从程序员到架构师的最佳技术成长之路
  • Javascript 原型链
  • 交换综合实验一
  • Hanlp分词之CRF中文词法分析详解
  • 急速 debug 实战一(浏览器-基础篇)
  • kubernetes系列07—Pod控制器详解
  • SSH 免密登录
  • [NodeJS] 关于Buffer
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 10个确保微服务与容器安全的最佳实践
  • Angular Elements 及其运作原理
  • JavaScript服务器推送技术之 WebSocket
  • JS+CSS实现数字滚动
  • Promise初体验
  • React-redux的原理以及使用
  • Vue UI框架库开发介绍
  • 工程优化暨babel升级小记
  • 基于webpack 的 vue 多页架构
  • 解决iview多表头动态更改列元素发生的错误
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​ArcGIS Pro 如何批量删除字段
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • ​人工智能书单(数学基础篇)
  • (补)B+树一些思想
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)ssm旅游企业财务管理系统 毕业设计 102100
  • (转) ns2/nam与nam实现相关的文件
  • (转)IOS中获取各种文件的目录路径的方法
  • .NET 使用 XPath 来读写 XML 文件
  • .netcore 获取appsettings
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET企业级应用架构设计系列之结尾篇
  • .NET实现之(自动更新)
  • .Net转前端开发-启航篇,如何定制博客园主题
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • /proc/vmstat 详解
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • @SuppressWarnings(unchecked)代码的作用
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [AHOI2009]中国象棋 DP,递推,组合数
  • [Asp.net MVC]Asp.net MVC5系列——Razor语法
  • [C#] 如何调用Python脚本程序
  • [C#]OpenCvSharp使用帧差法或者三帧差法检测移动物体
  • [C#基础知识系列]专题十七:深入理解动态类型