Python多环境管理工具,这两款可能都不错: Pyenv 和 Virtualenv 。
Pyenv ,是对Python的版本进行管理,实现版本的切换。
Virtualenv ,是通过创建虚拟环境,实现Python环境间的隔离,避免相互干扰。

Virtualenv 部署

首先得先准备好Python和pip。Windows系统去官网下载安装后就都有了。
CentOS7安装python3可以看这篇:https://blog.51cto.com/steed/2288045
用pip安装Virtualenv

pip install virtualenv

安装过程:

$ pip install virtualenv
Collecting virtualenvDownloading https://files.pythonhosted.org/packages/b6/30/96a02b2287098b23b875bc8c2f58071c35d2efe84f747b64d523721dc2b5/virtualenv-16.0.0-py2.py3-none-any.whl (1.9MB)100% |████████████████████████████████| 1.9MB 59kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.0.0
$

使用方法

这段可以跳过,看下面的小节,直接干
命令使用格式如下:

virtualenv [选项] 目标目录

最基本的用法,创建虚拟目录就是这样:

virtualenv /opt/ansible/venv

上面的命令将会创建指定的文件夹,包含了Python可执行文件,以及 pip 库的一份拷贝。如果你的本地 pip 库已经装了别的模块了,那么新的虚拟环境也会包含这些模块。如果不想这样,就要加上一些参数选项。
下面列出了一些可用的选项:

  • --version :显示当前版本号
  • -h, --help :显示帮助信息
  • -v, --verbose :显示详细信息
  • -q, --quiet :不显示详细信息
  • -p PYTHON_EXE, --python=PYTHON_EXE :指定所用的python解析器的版本(下面会展开)
  • --clear :清空非root用户的安装,并从头开始创建隔离环境
  • --no-site-packages :令隔离环境不能访问系统全局的 site-packages 目录。意思看不懂,下一节会用到
  • --system-site-packages :令隔离环境可以访问系统全局的 site-packages 目录
  • --unzip-setuptools :安装时解压 Setuptools 或 Distribute 。
  • --relocatable :重定位某个已经存在的隔离环境。使用该选项将修正脚本,并令所有.pth文件使用相应路径。
  • --distribute :使用 Distribute 代替 Setuotools ,也可设置环境变量 VIRTUALENV_DISTRIBUTE 达到同样效果。
  • --extra-search-dir=SEARCH_DIRS :用于查找 setuptools、distribute、pip 发布包的目录。可以加多个路径。
  • --never-download :禁止从网上下载任何数据。如果用上面的路径在本地搜索失败,会报错。
  • --prompt==PROMPT :定义隔离环境的命令行前缀。

用下面的命令,可以选择指定的Python解释器创建虚拟环境:

$ virtualenv -p /usr/bin/python2.7 venv

如果有多个Python解释器,比如在CentOS7上安装python3.6。默认的Python解释器不是要使用的,就要用 -p 参数设置一下了。
默认使用的解释器,可能是根据 pip 来决定的。我试的时候,CentOS默认有python2.7,我又安装了python3.6。使用python命令启动的是python2.7。但是python2.7没有安装 pip , pip 是安装在 python3.6 下的。启动 pip 用的是python3.6,如下:

$ pip -V
pip 18.1 from /usr/local/lib/python3.6/site-packages/pip-18.1-py3.6.egg/pip (python 3.6)

我实际安装虚拟环境的时候,没有用 -p 指定解释器,默认用的也是 python3.6 。

创建虚拟环境

创建工作目录:

$ mkdir /opt/ansible

在工作目录下,创建一个独立的虚拟环境,命名为venv:

$ cd /opt/ansible
$ virtualenv --no-site-packages venv
Using base prefix '/usr'
New python executable in /opt/ansible/venv/bin/python3.6
Also creating executable in /opt/ansible/venv/bin/python
Installing setuptools, pip, wheel...done.
$ 

命令virtualenv就可以创建一个独立的Python运行环境,我们还加上了参数--no-site-packages,这样,已经安装到系统Python环境中的所有第三方包都不会复制过来,这样,我们就得到了一个不带任何第三方包的“干净”的Python运行环境。

使用虚拟环境

使用source命令可以进入指定的虚拟环境,命令后面要跟虚拟环境目录下的 bin/activate 文件:

$ source /opt/ansible/venv/bin/activate
(venv) $ 

退出虚拟环境用Deactivate命令:

(venv) $ deactivate
$ 

这里都注意一下切换虚拟环境前后命令提示符的变化

测试

下面切换到虚拟环境下,安装个模块试下:

$ source /opt/ansible/venv/bin/activate
(venv) $ pip install ansible""" 中间的安装日志就省略了 """Successfully built ansible PyYAML MarkupSafe pycparser
Installing collected packages: MarkupSafe, jinja2, PyYAML, pycparser, cffi, six, pynacl, asn1crypto, idna, cryptography, bcrypt, pyasn1, paramiko, ansible
Successfully installed MarkupSafe-1.0 PyYAML-3.13 ansible-2.7.0 asn1crypto-0.24.0 bcrypt-3.1.4 cffi-1.11.5 cryptography-2.3.1 idna-2.7 jinja2-2.10 paramiko-2.4.2 pyasn1-0.4.4 pycparser-2.19 pynacl-1.3.0 six-1.11.0
(venv) $ ansible --version
ansible 2.7.0config file = Noneconfigured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']ansible python module location = /opt/ansible/venv/lib/python3.6/site-packages/ansibleexecutable location = /opt/ansible/venv/bin/ansiblepython version = 3.6.6 (default, Aug 13 2018, 18:24:23) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
(venv) $ deactivate
$ ansible --version
-bash: ansible: 未找到命令
$ /opt/ansible/venv/bin/ansible --version
ansible 2.7.0config file = Noneconfigured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']ansible python module location = /opt/ansible/venv/lib/python3.6/site-packages/ansibleexecutable location = /opt/ansible/venv/bin/ansiblepython version = 3.6.6 (default, Aug 13 2018, 18:24:23) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)]
$ 

切换到虚拟环境下安装,安装完之后,可以使用安装的模块。
然后退出虚拟环境,再次尝试使用之前的模块,就提示找不到命令了。
其实只是系统的环境变量变了,安装的模块还在,但是不在环境变量里,所以就找不到了,指定路径的话还是有的

总结

virtualenv为应用提供了隔离的Python运行环境,解决了不同应用间多版本的冲突问题。
要删除一个虚拟环境,只需删除它的文件夹。(执行 rm -rf venv )。

转载于:https://blog.51cto.com/steed/2298681

Python多环境扩展管理-Virtualenv相关推荐

  1. windows的python切换环境_Windows下的python虚拟环境设置

    Windows下的python虚拟环境设置: virtualenv 在python开发中,我们可能会遇到一种情况:就是当前的项目依赖的是某一个版本,但是另一个项目依赖的是另一个版本,这样就会造成依赖冲 ...

  2. python 环境管理工具_再见 virtualenv!K神教你轻松管理多个Python环境

    原标题:再见 virtualenv!K神教你轻松管理多个Python环境 超级无敌干货第一时间推给你!!! 小编电脑上有多个 Python 开发环境,每次都是用 virtualenv 创建一个 Pyt ...

  3. 拒绝conda, 用virtualenv构建多版本的python开发环境

    本文章转载自公众号 "生信码农笔记(ID:bio-coder)",已获得原作者授权. 1. 不喜欢用 conda 特别不喜欢 bioconda, miniconda, Anacon ...

  4. 检测到python编程环境中存在多个版本_linux下多个python版本怎么管理?

    VirtualEnv 是什么 VirtualEnv用于在一台机器上创建多个独立的python运行环境,VirtualEnvWrapper为前者提供了一些便利的命令行上的封装. 为什么要用 - 隔离项目 ...

  5. python部署服务器 venv_迁移virtualenv环境

    记录一次将window上的virtualenv部署至LINUX服务器 前提 你已经使用virtualenv创建了一个虚拟的python运行环境,并且已经完成了你的应用的开发,现在需要将工程部署到服务器 ...

  6. 使用virtualenv搭建一个干净的python开发环境

    简介 有时候在开发程序的时候会碰到一个问题,就是当我同时在开发两个应用,且两个应用需要的模块是相同的,但是版本不同,如果用pip安装的话,同时只能安装这个模块一个的版本. 这个时候就非常尴尬了,但是山 ...

  7. vim配置python开发环境_VIM插件管理及python开发环境配置

    这是在公司做的一个分享,目的是帮助新手快速的配置好python开发环境.在操作之前,建议先把你自己的vim配置文件(vimrc)和.vim文件夹先剪切到一个备份文件中. 上ppt(囧,blog地址写错 ...

  8. Ubuntu下基于Virtualenv构建Python开发环境

    1.安装virtualenv并建立虚拟环境 1).更新pip版本 sudo pip install --upgrade pip 如果出现如下异常: File "/usr/bin/pip&qu ...

  9. Python虚拟环境(一):基于virtualenv+virtualenvwrapper创建python虚拟环境

    文章目录 1. 概述 2. virtualenv + virtualenvwrapper 1. virtualenv 安装virtualenv 基本使用 2. virtualenvwrapper 安装 ...

  10. 苹果系统安装python环境_mac下python相关环境搭建(python开发必经之路之mac快速上手)...

    小结 本篇文章是对上一篇文章<MacOS的小结及终端shell的选择和相关配置全过程(zsh+iTerm2+powerline全解)>的一些拓展和总结,对于相关问题的详细解释和拓展点的标注 ...

最新文章

  1. Python核心编程(第二版)第六章部分习题代码
  2. phpcurl 请求Chunked-Encoded data 遇到的一个问题
  3. nyoj-469--擅长排列的小明 II
  4. (收藏)[Unix] vi基本操作方法
  5. python arcgis批量绘图_python调用ArcGIS批量生成多环缓冲区(多边形等距离放大)...
  6. 打破“创新困局”,让你的企业创意盎然的六个新角色
  7. C#趣味程序---三色球问题
  8. Hbase 的javaAPI基本操作用 在idea上的实现
  9. 怎样用css设置图片下的投影,css – 做这种投影的最佳方法是什么?
  10. OpenCV--cvScaler颜色赋值
  11. 转载:SharePoint技术资料
  12. HDU1875 畅通工程再续【Kruskal算法+并查集】
  13. 2016.04.06 UITabBar+badge.h
  14. 彻底解决SP2下ALEXA工具条无法显示(转)
  15. JAVA:Array List和Linked List
  16. CentOS调整LVM分区
  17. MBR膜生物反应器,生物反应器原理-世来福
  18. form提交的几种方法
  19. CCF-CSP认证历年真题解(100分)
  20. Android 4.2系统的手机使用LEAP企业Wifi网络 ( by quqi99 )

热门文章

  1. 让程序最小化到任务栏的时候隐藏
  2. HTML语言剖析(二)HTML标记一览
  3. 计算机应用基础教学改革参考文献,计算机考试论文,关于计算机等级考试计算机应用基础教学改革相关参考文献资料-免费论文范文...
  4. python 命名风格_python 代码风格------------PEP8规则
  5. js修改地址栏url_前端实战总结如何在不刷新页面的情况下改变URL
  6. C# List集合排序、去重方法小结
  7. PHP报错:Invalid body indentation level (expecting an indentation level of at least 4)
  8. Golang sha256 加密,PHP hash_hmac(‘sha256‘, $string, $key)加密,Js CryptoJS.HmacSHA256(string, key) 加密
  9. android 封装回调,OkHttp 优雅封装 OkHttps 之 回调线程魔变
  10. 运行JProfiler:ERROR: Invalid license key. Aborting