#Python学习#python虚拟环境——virtualenv
前言
在Ubuntu系统中,系统一般会默认安装python2.x和3.x,像我近期买的阿里云ECS默认安装了2.7.2和3.5.2,所有pip安装的第三方包都会被放在默认的site-apckages目录下。
如果我们在同一台机器上同时开发多个应用程序,问题一:python的版本问题,不同程序可能需要不同的版本;问题二:需要的不同第三方包管理,如果都放在一起总感觉不太好,强迫症。
如果可以为每一个应用程序开辟一个独立的python运行环境就好了,所以就有了 virtualven。
下载virtualenv
apt更新
sudo apt-get update //更新软件源中的所有软件列表
sudo apt-get upgrade //对照列表,更新已安装的软件
pip安装virtualenv
pip install virtualenv //不讨论pip和pip3问题,
使用virtualenv
新建项目目录
sudo mkdir myproject
cd myproject
创建虚拟环境
virtualenv -p /usr/bin/python3.5 --no-site-packages venv
一般项目的虚拟环境命名为venv。参数解释:
- -p /usr/bin/python3.5,-p指定解释器路径,可以指定虚拟环境python版本。
- --no-site-packages,已经安装到系统Python环境中的所有第三方包都不会复制过来,得到一个不带任何第三方包的“干净”的Python运行环境。
激活虚拟环境
source venv/bin/activate
通过source命令进入虚拟环境,注意到命令提示符有所变化,前面多了一个(venv),表示当前环境是一个名为venv的Python环境。
安装第三方包
pip install django
在venv环境下,用pip安装的包都被安装到venv这个环境下,系统Python环境不受任何影响。也就是说,venv环境是专门针对myproject这个应用创建的。
退出虚拟环境
deactivate
回到正常系统环境后,再使用pip安装的第三方包就会放在系统python环境中。
virtualenv是如何创建“独立”的Python运行环境的?
原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令source venv/bin/activate进入一个virtualenv环境时,virtualenv会修改相关环境变量,让命令python和pip均指向当前的virtualenv环境。所以想要创建虚拟环境,系统应该先安装该版本的python环境。
项目移植
在项目打包移植时可以抛弃虚拟环境(一般很大),利用命令生成项目所引用的第三方包,在项目部署时新建虚拟环境,重新下载这些第三方包即可。
pip list //查看当前环境中安装的第三方库
pip freeze > requirements.txt //导出当前环境第三方库信息
pip install -r requirements.txt //移植机器重新安装第三方库
总结
virtualenv为应用程序提供了隔离的Python运行环境,解决了不同应用间多版本的冲突问题。如果一台机子上有太多太多的项目,可以考虑使用virtualenvwrapper来统一管理。
Python最强的IDE——PyCharm在创建项目时会自动创建虚拟环境,安装第三方包可以通过左上角file-settings-project interpreter,点击"+"号,搜索第三方包直接安装就好。
参考链接
virtualenv - 廖雪峰的官方网站:virtualenv
python虚拟环境:virturlenv
本文版权归作者AlvinZH和博客园所有,欢迎转载和商用,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
#Python学习#python虚拟环境——virtualenv的更多相关文章
- 1 python学习——python环境配置
1 python学习--python环境配置 要学习python语言,光看书看教程还是不好,得动手去写.当然,不管学习什么编程语言,最佳的方式还在于实践. 要实践,先得有一个Python解释器来解释执 ...
- Python学习---Python安装与基础1205
1.0. 安装 1.1.1. 下载 官网下载地址:https://www.python.org/downloads/release/python-352/ 1.1.2. 配置环境变量 因为在安装的时候 ...
- Python学习---Python下[元组]的学习
元组是不可变的, 用小括号()定义,而且一旦定义 ,不可变[类型是tuple] [元组看做一个整体,不可拆分,不可赋值,但可以全部重新赋值] 通过圆括号,用逗号分隔,常用在使语句或用户定义的函数能够安 ...
- python 全栈开发,Day86(上传文件,上传头像,CBV,python读写Excel,虚拟环境virtualenv)
一.上传文件 上传一个图片 使用input type="file",来上传一个文件.注意:form表单必须添加属性enctype="multipart/form-data ...
- ubuntu python 安装使用虚拟环境 virtualenv
1,虚拟环境是干啥用的? 我在电脑上装了cuda,显卡驱动,cudnn等一堆配套文件,然后又依赖于cuda和驱动安装了tensorflow2.0的gpu测试版,不知为何,我每次跑完tf2程序电脑都会卡 ...
- Python学习--Python基础语法
第一个Python程序 交互式编程 交互式编程不需要创建脚本文件,是通过 Python 解释器的交互模式进来编写代码. linux上你只需要在命令行中输入 Python 命令即可启动交互式编程,提示窗 ...
- python学习-python入门
开始学习python,开始记录. 第一个小程序:登陆系统 功能:1.通过文件名和密码导入用户名和密码~ 2.用户输入用户名和密码 3.将用户输入的用户名进行比对,先判断用户名是否在黑名单里面,如果在黑 ...
- Python学习---Python的异步IO[all]
1.1.1. 前期环境准备和基础知识 安装: pip3 install aiohttp pip3 install grequests pip3 install wheel pip3 install s ...
- Python学习:python网址收集
Python学习网址收集: 语法学习:http://www.cnblogs.com/hongten/tag/python/ http://www.liaoxuefeng.com ...
随机推荐
- ASP项目部署IIS7.5中遇到的问题
我们大家都熟悉了tomcat服务器的部署,如果是一个ASP项目如何部署呢.这也是我在客户现场遇到的问题.ASP项目一般是用的系统组件IIS来部署项目.下面我讲一下自己在部署过程中遇到的问题. 如果在网 ...
- IDEA将项目导出war包方法(详细)
右上角点击进入配置页面(如图)选择Artifcts 点击绿色的那个+号,选择Web Application:Archive; 设置名称,选择输出路径 下面开始打war包在Build下面选择Build ...
- springboot深入学习(二)-----profile配置、运行原理、web开发
一.profile配置 通常企业级应用都会区分开发环境.测试环境以及生产环境等等.spring提供了全局profile配置的方式,使得在不同环境下使用不同的applicaiton.properties ...
- Latex插图操作
1.竖排插入两张图 \begin{figure}[h] //放在当前位置 \centering \subfigure[A given traffic flow set]{ \includegraphi ...
- 关于preg_match() / preg_replace()函数的一点小说明
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags = 0 [, int $ ...
- BeautifulSoup学习心得(一)
[BeautifulSoup最简介] BeautifulSoup,是Python中的一个第三方库,用于帮助解析Html/XML等内容,便于实现后期的内容提取等方面的工作. BeautifulSoup官 ...
- File类、文件过滤器、递归、文件及文件夹的操作方法
一.File Io概述: 当需要把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作. 当把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作. 因此我们把这种输入和 ...
- hdu 2838 Cow Sorting (树状数组+逆序对)
题目 题意:给你N个排列不规则的数,任务是把它从小到大排好,每次只能交换相邻两个数,交换一次的代价为两数之和,求最小代价 拿到这道题,我根本看不出这道题和树状数组有半毛钱关系,博客之,全说用树状数组做 ...
- hdu 4968 最大最小gpa
http://acm.hdu.edu.cn/showproblem.php?pid=4968 给定平均分和科目数量,要求保证及格的前提下,求平均绩点的最大值和最小值. dp[i][j]表示i个科目,总 ...
- browsersync
以后不需要F5了 之前实现自动刷新,是通过livereload,它需要插件比较麻烦:现在改为browsersync. BrowserSync,迅捷从免F5开始 完整选项 不止是自动刷新:默认就有 UI ...