Python多环境扩展管理-Virtualenv

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

Virtualenv 部署

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

pip install virtualenv

安装过程:

$ pip install virtualenv
Collecting virtualenv
  Downloading 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.0
  config file = None
  configured module search path = [‘/root/.ansible/plugins/modules‘, ‘/usr/share/ansible/plugins/modules‘]
  ansible python module location = /opt/ansible/venv/lib/python3.6/site-packages/ansible
  executable location = /opt/ansible/venv/bin/ansible
  python 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.0
  config file = None
  configured module search path = [‘/root/.ansible/plugins/modules‘, ‘/usr/share/ansible/plugins/modules‘]
  ansible python module location = /opt/ansible/venv/lib/python3.6/site-packages/ansible
  executable location = /opt/ansible/venv/bin/ansible
  python 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 )。

原文地址:http://blog.51cto.com/steed/2298681

时间: 2024-10-29 14:24:00

Python多环境扩展管理-Virtualenv的相关文章

window环境下安装 pip 工具 【pip为Python的扩展管理工具】

Python有一些扩展管理工具,例如easy_install和pip工具,我推荐各位使用pip工具,因为pip工具具有很好的安装和卸载体验. 我们首先需要打开pip的官方网站, 下载必要的文件包,然后我们解压文件包,即可看到 setup.py ,最后我们把文件包复制到python安装目录下,在命令行模式下运行安装命令即可. 安装命令:setup.py install

python构建多版本环境--pyenv、virtualenv折腾笔记续

VirtualEnv 是什么 VirtualEnv用于在一台机器上创建多个独立的python运行环境,VirtualEnvWrapper为前者提供了一些便利的命令行上的封装. 为什么要用 - 隔离项目之间的第三方包依赖,如A项目依赖django1.2.5,B项目依赖django1.3.- 为部署应用提供方便,把开发环境的虚拟环境打包到生产环境即可,不需要在服务器上再折腾一翻. 怎么用 安装 - pip install virtualenvwrapper- 把下面这句加到~/.bash_profi

Python学习笔记(四十三)virtualenv (创建一套“隔离”的Python运行环境)

摘抄自:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432712108300322c61f256c74803b43bfd65c6f8d0d0000 在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4.所有第三方的包都会被pip安装到Python3的site-packages目录下.(Linux) 如果我们要同时开发多个应用程序,那这些应用程

在ubuntu下搭建python开发环境(pycharm,postgresql,virtualenv, Django)

使用的系统及软件 Ubuntu 12.10 Python 2.7.3 Django 1.4.2 Pycharm 2.6.3 Postgresql 9.1 Virtualenv Virtualenvwrapper Openjdk 在开始之前,一定要给系统做一下备份.因为如果误操作了会有不必要的麻烦.我就是误安装了Postgresql,然后出现了大问题,最后不得不把系统给重装了. Ubuntu的系统自带python 2.7,所以不用特别的设置,直接用就行.当然因为使用了Django 1.4,也无法使

使用virtualenv为应用提供了隔离的Python运行环境

在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4.所有第三方的包都会被pip安装到Python3的site-packages目录下. 如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3.如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办? 这种情况下,每个应用可能需要各自拥有一套"独立"的Python运行环境.virtualenv就是用来为一个应用创建一套"隔离"

Python的支持工具[0] -> 环境包管理工具 -> Anaconda

Anaconda包管理工具 / Anaconda Package Management Tools Anaconda is the world's most popular Python data science platform Anaconda的包管工具使得用户可以针对不同的项目进行特定的环境建立,并且切换十分方便,大大提升了各种安装环境的管理效率. 1 Anaconda安装 / Anaconda Install Anaconda的安装十分的简单,直接在官网下载对应版本的安装包即可,安装时自

ubuntu下零基础建站之python基础环境搭建

这篇说的是 ubuntu下 python 基础环境 python2.7(为什么是2.7而不是3? tornado 对2.7支持比较好,还有很多包也是支持2.7) 1. 输入python 发现不存在 有python3 python3可以.装下python2 2. apt install python (默认python就是2.7版本) 等一会成功了 2.安装pip 部分linux发行版可直接用包管理器安装pip,如Debian和Ubuntu sudo apt-get install python-

Ubuntu18.04下Python Web环境搭建

Python3的安装与卸载 pip, pip3的安装 Django2.x的安装 mysql的安装及命令行工具mycli的安装 virtualenv及virtualenvwrapper的安装 IPython的安装 openjdk的安装(PyCharm需要Java环境) 1. Python3的安装与卸载 首先需要注意的是:系统自带的python(2, 3)建议别删掉!!!系统对自带的python(2, 3)是有依赖的,删掉会崩,自己安装的可以删掉. 此处安装和卸载的都是笔者自己在官网下载的版本,笔者

搭建Python开发环境(Mac)

准备 Python官网: https://www.python.org/ Python官方文档: https://docs.python.org/ 环境搭建 简介 pipenv是Python官方推荐的包管理工具.可以说,它集成了virtualenv, pip和pyenv三者的功能.其目的旨在集合了所有的包管理工具的长处,如: npm, yarn, composer等的优点. 它能够自动为项目创建和管理虚拟环境,从Pipfile文件添加或删除安装的包,同时生成Pipfile.lock来锁定安装包的