我思故我在我有我精彩--liangqihui

爱欲追而情已逝,子欲孝而亲不待。人生的困苦又怎能用一个难字囊尽百味
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

用virtualenv建立多个Python独立开发环境

Posted on 2018-03-07 11:03  挥辉  阅读(1315)  评论(1编辑  收藏  举报

用virtualenv建立多个Python独立开发环境

 

 

不同的人喜欢用不同的方式建立各自的开发环境,但在几乎所有的编程社区,总有一个(或一个以上)开发环境让人更容易接受。 使用不同的开发环境虽然没有什么错误,但有些环境设置更容易进行便利的测试,并做一些重复/模板化的任务,使得在每天的日常工作简单并易于维护。

什么是virtualenv?

在Python的开发环境的最常用的方法是使用 virtualenv 包。 Virtualenv是一个用来创建独立的Python环境的包。现在,出现了这样的问题:为什么我们需要一个独立的Python环境? 要回答这个问题,请允许我引用virtualenv自己的文档:

virtualenv is a tool to create isolated Python environments.

The basic problem being addressed is one of dependencies and versions, and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these applications? If you install everything into /usr/lib/python2.7/site-packages (or whatever your platform’s standard location is), it’s easy to end up in a situation where you unintentionally upgrade an application that shouldn’t be upgraded.

Or more generally, what if you want to install an application and leave it be? If an application works, any change in its libraries or the versions of those libraries can break the application.

Also, what if you can’t install packages into the global site-packages directory? For instance, on a shared host.

In all these cases, virtualenv can help you. It creates an environment that has its own installation directories, that doesn’t share libraries with other virtualenv environments (and optionally doesn’t access the globally installed libraries either).

我们需要处理的基本问题是包的依赖、版本和间接权限问题。想象一下,你有两个应用,一个应用需要libfoo的版本1,而另一应用需要版本2。如何才能同时使用这些应用程序?如果您安装到的/usr/lib/python2.7/site-packages(或任何平台的标准位置)的一切,在这种情况下,您可能会不小心升级不应该升级的应用程序。

简单地说,你可以为每个项目建立不同的/独立的Python环境,你将为每个项目安装所有需要的软件包到它们各自独立的环境中。

安装与使用virtualenv

安装 virtualenv 很简单:

1 pip install virtualenv

virtualenv安装完毕后,可以通过运行下面的命令来为你的项目创建独立的python环境:

1 mkdir nowamagic_venv
2 virtualenv --distribute nowamagic_venv

OK,成功。上面发生了什么?你创建了文件夹 nowamagic_venv 来存储你的新的独立Python环境。 这个文件夹位于 /root 下面。

我们再来看看输出:

1 New python executable in nowamagic_venv/bin/python2.7
2 Also creating executable in nowamagic_venv/bin/python
3 Installing Setuptools......done.
4 Installing Pip...........done.

--distribute 选项使virtualenv使用新的基于发行版的包管理系统而不是 setuptools 获得的包。 你现在需要知道的就是 --distribute 选项会自动在新的虚拟环境中安装 pip ,这样就不需要手动安装了。 当你成为一个更有经验的Python开发者,你就会明白其中细节。

  • activate:这个virtualenv的激活文件
  • pip:这个virtualenv的独立pip
  • python:python解释器的一个副本
  • lib/python2.7:所有的新包会被存在这

试验一下

通过下面的命令激活这个virtualenv:

1 [root@nowamagic ~]# cd nowamagic_venv
2 [root@nowamagic nowamagic_venv]# source bin/activate
3 (nowamagic_venv)[root@nowamagic nowamagic_venv]#

运行下面的命令可以更好地理解两者的差异,如果已经进入virtualenv请先离开。

1 deactivate  #离开

首先让我们看看如果调用python/pip命令它会调用那一个。

1 [root@nowamagic ~]# which python
2 /usr/bin/python
1 [root@nowamagic ~]# which pip
2 /usr/local/bin/pip

再来一次!这次打开virtualenv,然后看看有什么不同。我的机子上显示如下:

1 [root@nowamagic ~]# which python
2 /root/nowamagic_venv/bin/python
1 [root@nowamagic ~]# which pip
2 /root/nowamagic_venv/bin/pip

virtualenv拷贝了Python可执行文件的副本,并创建一些有用的脚本和安装了项目需要的软件包,你可以在项目的整个生命周期中安装/升级/删除这些包。 它也修改了一些搜索路径,例如PYTHONPATH,以确保:

  • 当安装包时,它们被安装在当前活动的virtualenv里,而不是系统范围内的Python路径。
  • 当import代码时,virtualenv将优先采取本环境中安装的包,而不是系统Python目录中安装的包。

还有一点比较重要,在默认情况下,所有安装在系统范围内的包对于virtualenv是可见的。 这意味着如果你将simplejson安装在您的系统Python目录中,它会自动提供给所有的virtualenvs使用。 这种行为可以被更改,在创建virtualenv时增加 --no-site-packages 选项的virtualenv就不会读取系统包,如下:

1 virtualenv nowamagic_venv --no-site-packages

 

 

 

Windows 下pip安装以及virtualenv环境搭建

原创 2015年01月16日 14:44:15

 

微信公众号" IT程序猿进化史", 共同学习进化~


 

1、确保已安装python环境

2、进入python的官网下载工具,网址如下:https://pypi.python.org/pypi/setuptools

 

 

 

3、  找到ez_setup.py,点击下载,或者点击将其中内容进行复制,在本地创建文件ez_setup.py,将内容粘贴进去。

 

4、  双击运行下载好的文件,运行成功后,进入Python安装目录下Scripts文件夹下,发现easy_install以及pip相关文件已正常添加。

 

 

5、  为了方便在cmd下使用常用命令,将Scripts文件夹路径添加到环境变量中,假设你在缺省路径安装了 Python 2.7 ,那么就应该添加如下内容:

	;C:\Python27\Scripts

6、  至此pip/easy_install安装完毕。

7、  打开cmd窗口,切换到合适路径下,输入命令

	>pip install virtualenv 

8、  安装完毕后发现Scripts目录下,virtualenv相关文件已正常添加

 

9、  至此全部环境搭建成功~

 

10、进入一个希望创建虚拟Python环境的文件夹下,输入命令:

	>virtualenv venv

cmd 的当前目录下面多了一个 venv 文件夹,这个文件夹保存着当前Python虚拟环境。

 

11、 virtualenv命令使用

开启:

	>\venv\Scripts\activate

关闭:

	>\venv\Scripts\deactivate

        查看当前虚拟环境配置信息

 	>\venv\Scripts\activate
 	>pip list
-------------------

windows下使用virtualenv

96 
imsilence 
2017.05.04 12:49* 字数 280 阅读 1666评论 0

virtualenv使用:

  1. 安装
    pip install virtualenv

  2. 创建虚拟环境
    virtualenv env

  3. 启动虚拟环境
    .\env\Scripts\activate.bat

  4. 查看虚拟环境安装的python包
    pip install package
    easy_install package[.exe|.egg]

  5. 退出虚拟环境
    deactivate

在windows上也提供了virtualenvwrapper

  1. 安装
    pip install virtualenvwrapper-win
    可设置环境变量WORKON_HOME指定virtualenvwrapper虚拟环境默认路径

  2. 创建虚拟环境
    mkvirtualenv env

  3. 查看所有虚拟环境和启动虚拟环境
    lsvirtualenv
    workon
    workon env

  4. 退出虚拟环境
    deactivate

  5. 将指定路径添加到sitepackages目录下的virtualenv_path_extensions.pth中可以直接进行import,在启动虚拟环境时则添加到虚拟环境中,在未启动则添加到默认python环境中
    add2virtualenv path

  6. 其他命令
    cdproject: 切换目录到当前指定的project目录下, 使用前需要使用setprojectdir进行设置
    cdvirtualenv: 切换到当前虚拟环境目录下
    cdsitepackages: 切换到当前虚拟环境的sitepackages下
    lssitepackages: 查看当前虚拟环境的sitepackages目录下的包
    setprojectdir path: 设置project目录
    toggleglobalsitepackages:启用/关闭系统sitepackages
    whereis file:查看文件路径



-------------------
 这三个对Python项目部署非常便利。
1. virtualenv 用来建立一个虚拟的python环境,一个专属于项目的python环境。用virtualenv 来保持一个干净的环境非常有用。
2. pip 用来解决项目依赖问题。将项目所有依赖的第三方库写在一个requirements.txt 中用pip 批量安装。一般和virtualenv 配合使用,将所有包安装在virtualenv 的环境中。
3. fabric 用来自动化远程部署项目,非常的方便。可以根据需要在本地、远程依次执行一系列shell 命令、程序等。比如从代码库更新代码,执行数据迁移脚本,重启服务进程,完成自动化的部署。

相比virtualenv和pip, buildout才是真正的好东西, 不论是虚拟python环境的干净程度, 用法的方便度, 对安装包的可定制/操控度, 还是对批量部署的支持都是远超前者. 可以说 virtualenv + pip 还停留在手工时代, 而buildout 已经进入了机械时代.

至于 fabric, 的确是个好工具 简简单单一个 fabfile 就可以实现代码的批量部署和管理, 并且也可以选择不用它的fab命令而自己基于它的api进行深度开发, 唯一的弱点就是对ssh的依赖略重了吧.

另外推荐另一个好工具 supervisor.