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 相关文章推荐
python判断完全平方数的方法
Nov 13 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
Nov 14 Python
pygame游戏之旅 调用按钮实现游戏开始功能
Nov 21 Python
Django缓存系统实现过程解析
Aug 02 Python
python编写简单端口扫描器
Sep 04 Python
使用Python生成200个激活码的实现方法
Nov 22 Python
python 实现按对象传值
Dec 26 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
Mar 08 Python
Python 跨.py文件调用自定义函数说明
Jun 01 Python
python rolling regression. 使用 Python 实现滚动回归操作
Jun 08 Python
python interpolate插值实例
Jul 06 Python
利用Python实现翻译HTML中的文本字符串
Jun 21 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
PHP 数组入门教程小结
2009/05/20 PHP
php中in_array函数用法探究
2014/11/25 PHP
php采用session实现防止页面重复刷新
2015/12/24 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
基于php实现的php代码加密解密类完整实例
2016/10/12 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
JavaScript基本对象
2007/01/11 Javascript
JavaScript Konami Code 实现代码
2009/07/29 Javascript
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
将文本输入框内容加入表中的js代码
2013/08/18 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
Vue-resource拦截器判断token失效跳转的实例
2017/10/27 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
15分钟深入了解JS继承分类、原理与用法
2019/01/19 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
在Python中使用异步Socket编程性能测试
2014/06/25 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
Python基于SMTP协议实现发送邮件功能详解
2018/08/14 Python
python根据url地址下载小文件的实例
2018/12/18 Python
Python求一批字符串的最长公共前缀算法示例
2019/03/02 Python
Python 图像处理: 生成二维高斯分布蒙版的实例
2019/07/04 Python
Python关于反射的实例代码分享
2020/02/20 Python
Python openpyxl模块实现excel读写操作
2020/06/30 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
幼儿园小班教学反思
2014/02/02 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
收款授权委托书
2014/10/02 职场文书
隐形的翅膀观后感
2015/06/10 职场文书
yolov5返回坐标的方法实例
2022/03/17 Python
vue生命周期钩子函数以及触发时机
2022/04/26 Vue.js
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers