Ubuntu下创建虚拟独立的Python环境全过程


Posted in Python onFebruary 10, 2017

前言

虚拟环境是程序执行时的独立执行环境,在同一台服务器中可以创建不同的虚拟环境供不同的系统使用,项目之间的运行环境保持独立性而相互不受影响。例如项目可以在基于 Python2.7 的环境中运行,而项目 B 可以在基于Python3.x 的环境中运行。在 Python 中通过 virtualenv 工具管理虚拟环境。

另外在 win 或者 mac 上也是极力推荐安装虚拟环境来管理你的 Python 环境,虚拟环境能为你带来不少好处,比如在 Mac 上,自带的 Python 环境为 2.7 。而我们 Django 开发最合适的就是 3.4+。如此一来,你就要去 Google 如何卸载或者转至 Python3.4 的环境,还是比较麻烦。一旦我们有了虚拟环境之后,我们都可以在独立的环境中去安装我们需要的模块或者包的不同的版本,这样会带来很大方便。

Install

在 Linux 系统中执行如下命令安装:

$ sudo pip install virtualenv

在 Ubuntu 中以及其衍生系统中执行如下命令安装即可:

$ sudo apt-get install python-virtualenv

Create

安装成功之后,执行如下命令创建名称为 myvenv 的虚拟环境:

$ virtualenv myvenv

提示如下:

allen@ubuntu:~$ virtualenv myvenv
Running virtualenv with interpreter /usr/bin/python2
New python executable in myvenv/bin/python2
Also creating executable in myvenv/bin/python
Installing setuptools, pip...done.

Activate

source kvenv/bin/activate

具体过程如下,可以看到我们在当前环境下查看 Python 的版本,显示是在虚拟环境 myvenv 下的:

allen@ubuntu:~$ source myvenv/bin/activate
(myvenv)allen@ubuntu:~$ which python
/home/allen/myvenv/bin/python

当然退出当前虚拟环境如下命令即可:

deactivate

Pip

在激活了虚拟环境之后,你可以在这个环境中任意的Pip 啦:

pip install Pillow

Virtualenvwrapper

其为虚拟环境扩展包,用于管理虚拟环境,如列表所有虚拟环境,删除等等。

1. 安装:

#安装virtualenv
(sudo) pip install virtualenv

#安装virtualenvwrapper
(sudo) pip install virtualenvwrapper

2. 配置:

修改~/.bash_profile或其它环境变量相关文件(如 .bashrc(我的Ubuntu15.10 下的是这个) 或用 ZSH 之后的 .zshrc),添加以下语句:

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/workspace
source /usr/local/bin/virtualenvwrapper.sh

然后运行:

source ~/.bash_profile

3. 用法:

  1. mkvirtualenv zqxt:创建运行环境zqxt
  2. workon zqxt: 工作在 zqxt 环境 或 从其它环境切换到 zqxt 环境
  3. deactivate: 退出终端环境

其它的:

  1. rmvirtualenv ENV:删除运行环境ENV
  2. mkproject mic:创建mic项目和运行环境mic
  3. mktmpenv:创建临时运行环境
  4. lsvirtualenv: 列出可用的运行环境
  5. lssitepackages: 列出当前环境安装了的包

创建的环境是独立的,互不干扰,无需sudo权限即可使用 pip 来进行包的管理。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
写了个监控nginx进程的Python脚本
May 10 Python
python读写ini文件示例(python读写文件)
Mar 25 Python
python用模块zlib压缩与解压字符串和文件的方法
Dec 16 Python
django+js+ajax实现刷新页面的方法
May 22 Python
Python3实现简单可学习的手写体识别(实例讲解)
Oct 21 Python
python执行使用shell命令方法分享
Nov 08 Python
详解python里的命名规范
Jul 16 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
Oct 14 Python
如何将PySpark导入Python的放实现(2种)
Apr 26 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
Jan 10 Python
Python3使用tesserocr识别字母数字验证码的实现
Jan 29 Python
python 如何用map()函数创建多线程任务
Apr 07 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 #Python
Python使用QQ邮箱发送Email的方法实例
Feb 09 #Python
python3中bytes和string之间的互相转换
Feb 09 #Python
python实现下载文件的三种方法
Feb 09 #Python
Python如何实现守护进程的方法示例
Feb 08 #Python
详解Python中表达式i += x与i = i + x是否等价
Feb 08 #Python
Python实现的多线程http压力测试代码
Feb 08 #Python
You might like
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
FirePHP 推荐一款PHP调试工具
2011/04/23 PHP
探讨php define()函数及defined()函数使用详解
2013/06/09 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
2020/03/26 PHP
javascript陷阱 一不小心你就中招了(字符运算)
2013/11/10 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
js改变embed标签src值的方法
2015/04/10 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
js实现产品缩略图效果
2017/03/10 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
Vue项目全局配置页面缓存之按需读取缓存的实现详解
2018/08/01 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
Python如何实现文本转语音
2016/08/08 Python
Python实现的文本简单可逆加密算法示例
2017/05/18 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
Python中创建二维数组
2018/10/17 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
python中pow函数用法及功能说明
2020/12/04 Python
xml有哪些解析技术?区别是什么
2016/04/26 面试题
药品质量检测应届生求职信
2013/11/14 职场文书
艺术应用与设计个人的自我评价
2013/11/23 职场文书
简历的自我评价
2014/02/03 职场文书
活动总结怎么写
2014/04/28 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
会计稽核岗位职责
2015/04/13 职场文书
高中开学感言
2015/08/01 职场文书
2016年寒假生活小结
2015/10/10 职场文书
2016习总书记系列重要讲话心得体会
2016/01/15 职场文书
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle
Spring Cloud OAuth2实现自定义token返回格式
2022/06/25 Java/Android