virtualenv介绍及简明教程


Posted in Python onJune 23, 2020

virtualenv简介

在开发Python应用程序的时候,我们的系统上通常只会安装一个Python版本:例如 3.7。所有使用 pip 安装的第三方包都会被安装到Python的site-packages目录下。如果我们同时开发多个应用程序,而这些应用程序需要使用的某一个第三方包的版本各不相同,该怎么办?这种情况下,为每个应用程序“独立”安装一套Python运行环境显然是不现实的。这个难题,使用 virtualenv 可以轻易解决。

virtualenv 是专门用来为应用程序维护多套相互“隔离”的Python运行环境的工具,借助 virtualenv 我们可以在一台主机上创建多套相互隔离的Python运行环境。

安装virtualenv

安装准备

安装 virtualenv 之前需要先确认是否安装好 python 和 pip 。

# python -V
Python 2.7.
 
# pip -V
pip 19.0.3 from /usr/local/python3/lib/python3.7/site-packages/pip (python 3.7)

pip安装virtualenv

pip install virtualenv
# 或者
pip3 install virtualenv
 
# 检查是否安装成功
virtualenv --version
virtualenv 20.0.17 from /usr/local/python3/lib/python3.7/site-packages/virtualenv/__init__.py

常见问题: -bash: virtualenv: command not found

解决办法:

# 找到 virtualenv 的安装路径
find / -name virtualenv
# /usr/local/python3/bin/virtualenv
# 创建软连接
ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualenv

virtualenv各种其他命令如下:

用法:

$ virtualenv [OPTIONS] DEST_DIR

选项:

?version
显示当前版本号。

-h, ?help
显示帮助信息。

-v, ?verbose
显示详细信息。

-q, ?quiet
不显示详细信息。

-p PYTHON_EXE, ?python=PYTHON_EXE
指定所用的python解析器的版本,比如 ?python=python2.5 就使用2.5版本的解析器创建新的隔离环境。 默认使用的是当前系统安装(/usr/bin/python)的python解析器

?clear
清空非root用户的安装,并重头开始创建隔离环境。

?no-site-packages
令隔离环境不能访问系统全局的site-packages目录。

?system-site-packages
令隔离环境可以访问系统全局的site-packages目录。

?unzip-setuptools
安装时解压Setuptools或Distribute

?relocatable
重定位某个已存在的隔离环境。使用该选项将修正脚本并令所有.pth文件使用相当路径。

?distribute
使用Distribute代替Setuptools,也可设置环境变量VIRTUALENV_DISTRIBUTE达到同样效要。

?extra-search-dir=SEARCH_DIRS
用于查找setuptools/distribute/pip发布包的目录。可以添加任意数量的?extra-search-dir路径。

?never-download
禁止从网上下载任何数据。此时,如果在本地搜索发布包失败,virtualenv就会报错。

?prompt==PROMPT
定义隔离环境的命令行前缀。

使用virtualenv

# 创建一个文件夹用来存放各个环境的相关文件
mkdir envs
cd envs
 
# 创建一个名称为 test_env 的不带任何第三方包的独立的Python运行环境
virtualenv test_env
# 或者
mkdir test_env
cd test_env
virtualenv .
 
# 进入环境
source test_env/bin/activate
(test_env) [root@hadoop34 envs]#
 
# 为环境安装软件包
(test_env) [root@hadoop34 envs]# pip install requests
 
# 退出环境
(test_env) [root@hadoop34 envs]# deactivate

综上

virtualenv就是一个搭建虚拟化的python环境,便于不同的项目在同一台机器上开发运行。

virtualenv更多的还是适用于本地开发不同的项目,但是在生产环境中还是使用docker给不同的项目创建不同的容器,各自分开运行为好,不宜放在一个单独的物理机中运行。

到此这篇关于virtualenv介绍及简明教程的文章就介绍到这了,更多相关virtualenv使用内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python pickle类库介绍(对象序列化和反序列化)
Nov 21 Python
python实现爬取图书封面
Jul 05 Python
分析python请求数据
Aug 19 Python
Python字符串的全排列算法实例详解
Jan 07 Python
解决python 3 urllib 没有 urlencode 属性的问题
Aug 22 Python
Python之Numpy的超实用基础详细教程
Oct 23 Python
Python线程障碍对象Barrier原理详解
Dec 02 Python
django formset实现数据表的批量操作的示例代码
Dec 06 Python
pytorch 指定gpu训练与多gpu并行训练示例
Dec 31 Python
OpenCV Python实现图像指定区域裁剪
Mar 12 Python
Python爬取酷狗MP3音频的步骤
Feb 26 Python
Python实现生活常识解答机器人
Jun 28 Python
python不同系统中打开方法
Jun 23 #Python
自学python用什么系统好
Jun 23 #Python
卸载tensorflow-cpu重装tensorflow-gpu操作
Jun 23 #Python
python为什么会环境变量设置不成功
Jun 23 #Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
Jun 23 #Python
解决tensorflow 释放图,删除变量问题
Jun 23 #Python
TensorFlow中如何确定张量的形状实例
Jun 23 #Python
You might like
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
PHP递归实现汉诺塔问题的方法示例
2017/11/25 PHP
IE浏览器兼容Firefox的JS脚本的代码
2008/10/23 Javascript
很全的显示阴历(农历)日期的js代码
2009/01/01 Javascript
js实现页面转发功能示例代码
2013/08/05 Javascript
javascript中的throttle和debounce浅析
2014/06/06 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
2017/09/12 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
2018/06/22 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
JS重学系列之聊聊new操作符
2019/03/04 Javascript
Angular.JS读取数据库数据调用完整实例
2019/07/02 Javascript
vue根据条件不同显示不同按钮的操作
2020/08/04 Javascript
原生JavaScript实现拖动校验功能
2020/09/29 Javascript
[03:46]DOTA2英雄基础教程 维萨吉
2013/12/11 DOTA
python利用hook技术破解https的实例代码
2013/03/25 Python
Python入门篇之条件、循环
2014/10/17 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
Python3.4 splinter(模拟填写表单)使用方法
2018/10/13 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
对python cv2批量灰度图片并保存的实例讲解
2018/11/09 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
Python 合并拼接字符串的方法
2020/07/28 Python
python+selenium自动化实战携带cookies模拟登陆微博
2021/01/19 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
CSS3中动画属性transform、transition和animation属性的区别
2016/09/25 HTML / CSS
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
医药学专业大学生职业生涯规划书论文
2014/01/21 职场文书
顶撞老师检讨书
2014/02/07 职场文书
新闻专业毕业生求职信
2014/08/08 职场文书
小学生勤俭节约演讲稿
2014/08/28 职场文书
2014年高二班主任工作总结
2014/12/16 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
爱国主义主题班会
2015/08/14 职场文书
ConstraintValidator类如何实现自定义注解校验前端传参
2021/06/18 Java/Android