Python本身有很多个版本,第三方的Python包又有很多可用的版本,所以经常会遇到下面的问题:

  1. 运行不同的Python程序,需要使用不同版本的Python(2.x或3.x).
  2. 在同一中Python版本中,可能需要用到不同版本的第三方包,例如:Django 1.6或者Django 1.7

对于上面的问题,已经有很多现成的个工具可以解决。根据解决上面问题的方法,这些工具大概可以分为两类:

  • Python 版本环境切换工具
  • 特定Python版本虚拟环境切换工具

现有工具及介绍

下面看看现在流行的虚拟环境工具,以及简单的介绍。

Python 版本环境切换工具

Python版本环境切换工具的作用就是让多个不同版本的Python可以在系统上共存。并且提供简单的命令来支持不同Python版本之间的切换。

工具

介绍

pyenv

目前最流行的 python版本环境切换工具,但是不支持Windows

pywin

Windows 上pyenv 的替代品,但是功能相对pyenv比较少

py.exe

Python 3.3 版本以后Windows系统自带的启动工具(Python Launcher for Windows),可以直接在命令行中使用

特定Python版本虚拟环境切换工具

简单的说,虚拟环境切换工具就是可以根据当前使用的Python版本环境来创建多个虚拟的Python环境。这些虚拟的环境之间相互独立,可以安装各个环境所需的Python包。

工具

介绍

virtualenv

目前最流行的 python 虚拟环境配置工具

virtualenvwrapper

使用shell开发,是对virtualenv的一个封装,简化了virtualenv命令的使用,并且进行了一些功能扩展

virtualenvwrapper-win

使用Windows batch shell开发的virtualenvwrapper

venv

Python 3.3 版本以后自带的虚拟环境工具,仅支持 python 3.3 和以后版本

由于我现在大部分时间工作在Windows环境,下面就主要介绍一下pywin和virtualenvwrapper-win的使用。

pywin

现在看看Windows上Python版本环境切换工具pywin

对于pywin的工作原理就可以简单的理解为,通过pywin提供的命令可以简单的以设置环境变量的方式决定优先使用特定版本的Python。

安装

对于pywin,我们可以使用源码、easy_install和pip三种方式进行安装,关于这些安装方式的关系,请参考前一篇文章

下面通过pip来安装pywin:

常用命令

安装完成之后就看看pywin的常用命令。

"pyassoc"和"pywin genlaunchers"是两个配置相关的命令。我本机安装了2.7和3.4两个版本的Python,默认环境变量指向2.7,配置完成后就会就会在2.7目录中生成本机安装所有Python版本的launcher。

配置完成之后,就可以通过pywin进行不同版本之间的Python切换了。

1. 打开环境变量PAHT中第一个Python版本环境

C:\Users\tianw1>pywin
Python 2.7. (default, Jun , ::) [MSC v. bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

2. 打开Python 3.4

C:\Users\tianw1>pywin -3.4
Python 3.4. (v3.4.3:9b73f1c3e601, Feb , ::) [MSC v. bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

3. 将Python 3.4设置为默认的Python执行环境,根据输出也可以看出,其实就是将Python 3.4目录放在环境变量PATH的前面位置

C:\Users\tianw1>pywin setdefault 3.4

    Setting default python for active session to: 3.4
C:\Python34;C:\Python34\Scripts -- now at front of PATH
# 由于Python .4中没有安装pywin,所以会报错
C:\Users\tianw1>pywin
'pywin' is not recognized as an internal or external command,
operable program or batch file. C:\Users\tianw1>python
Python 3.4. (v3.4.3:9b73f1c3e601, Feb , ::) [MSC v. bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()

4. 即使上面通过pywin将默认Python版本环境设为3.4,但是由于文件的查找还是先本地,然后环境变量PATH。所以,下面方式使用的还是2.7版本,同时也可以再通过pywin将2.7设置为默认Python版本环境。

C:\>cd Python27
C:\Python27>python
Python 2.7. (default, Jun , ::) [MSC v. bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit() C:\Python27>pywin setdefault 2.7 Setting default python for active session to: 2.7
C:\Python27;C:\Python27\Scripts -- now at front of PATH C:\Python27>

virtualenvwrapper-win

在Windows环境中使用"virtualenvwrapper-win"还是比较方便的。

安装

同样使用pip进行安装:

pip install virtualenvwrapper-win

常用命令

安装完成之后,就可以直接使用"virtualenvwrapper-win"提供的命令来创建虚拟环境了。

1. 新建虚拟环境:mkvirtualenv env_name

C:\Users\tianw1>mkvirtualenv py27_dev1
New python executable in py27_dev1\Scripts\python.exe
Installing setuptools, pip, wheel...done. (py27_dev1) C:\Users\tianw1>pip list
pip (7.1.)
setuptools (18.2)
wheel (0.24.)

注意,默认情况虚拟环境不会自通引用原始Python环境中的软件包,但是可以通过"--system-site-packages"参数来使虚拟环境引用原始Python环境中的软件包。

C:\Users\tianw1>mkvirtualenv --system-site-packages py27_dev2
New python executable in py27_dev2\Scripts\python.exe
Installing setuptools, pip, wheel...done. (py27_dev2) C:\Users\tianw1>pip list
backports.ssl-match-hostname (3.4.0.2)
certifi (2015.4.)
click (4.1)
flask (0.11.dev0)
gevent (1.0.)
greenlet (0.4.)
itsdangerous (0.24)
jinja2 (2.8)
pip (7.1.)
pywin (0.3.)
setuptools (18.2)
smmap (0.9.)
tornado (4.2.)
virtualenv (13.1.)
virtualenvwrapper-win (1.2.)
Werkzeug (0.10.)
wheel (0.24.)

2. 离开虚拟环境:deactivate

(py27_dev1) C:\Users\tianw1>deactivate

C:\Users\tianw1> 

3. 列出虚拟环境列表:workon 或lsvirtualenv

C:\Users\tianw1>workon

Pass a name to activate one of the following virtualenvs:
==============================================================================
py27_dev1
py27_dev2 C:\Users\tianw1>lsvirtualenv dir /b /ad "C:\Users\tianw1\Envs"
==============================================================================
py27_dev1
py27_dev2 C:\Users\tianw1>

4. 删除虚拟环境:rmvirtualenv env_name

总结

本文介绍了Python 版本环境切换工具和虚拟环境切换工具,通过这些工具可以方便系统中不同版本的Python切换,同时也方便了创建独立的Python虚拟环境。

使用Python虚拟环境的另一个好处是可以方便的进行环境部署,对于每个虚拟环境,都可以通过下面的命令很方便的进行环境部署:

  • pip freeze > requirements.txt将包依赖信息保存在requirements.txt文件
  • pip install -r requirements.txt会自动从网上下载并安装所有包

Python之虚拟环境管理的更多相关文章

  1. 【python】虚拟环境管理之 virtualenv 、pipenv

    虚拟环境介绍 应用场景 python在安装第三方包时,会被pip安装到/site-package下,如果我们需要同时维护多个python项目,那这些项目都会共用一个python,而真实需求是多个项目之 ...

  2. python的虚拟环境管理工具venv使用方法介绍及与nodejs的包管理方式对比

    一.nodejs 包管理方式 我们知道, nodejs的包管理工具npm可以安装项目所需要的包,安装方法及区别如下: npm i module_name -g 全局安装 npm i module_na ...

  3. tox python项目虚拟环境管理自动化测试&&构建工具

    tox 是一个方便的工具,可以帮助我们管理python 的虚拟环境,同时可以进行项目自动测试以及构建 tox 如何工作的 说明 从上图我们也可以看出如何在我们项目中使用tox 参考资料 https:/ ...

  4. 工具-python包-虚拟环境管理(99.4.1)

    @ 目录 1.第一种方法-virtualenv 2.第二种方法-pycharm 关于作者 1.第一种方法-virtualenv 1.安装 pip install virtualenv pip inst ...

  5. python开发之虚拟环境管理:virtualenv、virtualenvwrapper、pycharm

    1 引言 进行Python开发时,多个项目可能使用到不同的依赖,例如A项目需要1.8版本的Django,而B项目需要2.0版本的Django,这时候如果没有使用虚拟环境,就需要来回卸载和安装Djang ...

  6. 在linux上安装python, jupyter, 虚拟环境(virtualenv)以及 虚拟环境管理之virtualenvwraper

    一, 安装python31.下载python3源码 wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7.tar.xz2.解压缩源码包,去 ...

  7. Python linux多版本共存以及虚拟环境管理(转摘)

    Python linux多版本共存以及虚拟环境管理 2017年08月01日 18:42:25 sliderSun 阅读数:197更多 个人分类: python   版权声明:本文为博主原创文章,未经博 ...

  8. anaconda虚拟环境管理,从此Python版本不用愁

    1 引言 在前几篇博文中介绍过virtualenv.virtualenvwrapper等几个虚拟环境管理工具,本篇要介绍的anaconda也有很强大的虚拟环境管理功能,甚至相比virtualenv.v ...

  9. python虚拟环境管理之virtualenv,virtualenvwrapper,pipenv,conda

    虚拟环境的作用 使python环境拥有独立的包,避免污染原本的python环境.为不同的项目创建不同的环境可以避免安装的库过于庞大和相互干扰. 例如你想在同一台机器上开发用python2和python ...

随机推荐

  1. Freemarker操作字符串

    1.substring(start,end)从一个字符串中截取子串start:截取子串开始的索引,start必须大于等于0,小于等于endend: 截取子串的长度,end必须大于等于0,小于等于字符串 ...

  2. Java获取mysql数据库元数据

    修改后的版本: package com.genratesql.util; import java.sql.Connection; import java.sql.DatabaseMetaData; i ...

  3. 链接按钮LinkButton(按钮组)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. Linux gcc/g++链接编译顺序详解

    gcc/g++链接时对库的顺序要求 -Ldir Add directory dir to the list of directories to be searched for -l. -llibrar ...

  5. Android Custom View系列《圆形菜单一》

    前言 自定义view能够做出很多不同寻常的效果,圆形菜单交互效果不错,目前网上有两个版本,虽然比较庞大,但非常值得研究与学习. radial-menu-widget: https://code.goo ...

  6. 自然语言交流系统 phxnet团队 创新实训 个人博客 (十二)

    在本项目中关于天空盒子的使用的配置方法: 给场景添加天空盒  第二种方式   在菜单栏中选择:Edit->Render Setting,在保证不在选择场景中其它文件的前提下,Inspector面 ...

  7. android学习中遇到的错误

    1.运行项目的时候报错: [2013-12-16 17:59:22 - Dex Loader] Unable to execute dex: java.nio.BufferOverflowExcept ...

  8. Spring系列(二):Spring IoC/DI的理解

    这几天重新学习了一下Spring,在网上找了相关的ppt来看,当看到Spring IoC这一章节的时候,先大致浏览了一下内容,有将近50页的内容,内心窃喜~QAQ~,看完这些内容能够对IoC有更深层次 ...

  9. Swing AWT一套新的图形界面系统

    Swing 是在AWT的基础上构建的一套新的图形界面系统,它提供了AWT 所能够提供的所有功能,并且用纯粹的Java代码对AWT 的功能进行了大幅度的扩充. 例如说并不是所有的操作系统都提供了对树形控 ...

  10. Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.【转】

    今天碰到了一个查询异常问题,上网查了一下,感谢原创和译者 如果你使用的数据库连接类是 the Data Access Application Blocks "SqlHelper" ...