- 浏览: 28143 次
- 性别:
- 来自: 北京
最新评论
virtualenv是一个python工具. 它可以创建一个独立的python环境. 这样做的好处是你的python程序运行在这个环境里, 不受其它的 python library的版本问题影响. 比如说你想用最新的Django 1.3开发新的项目, 但是现有的Pinax 0.7只支持到Django 1.1. 传统的做法是在环境变量PYTHONPATH里明确地规定程序包的目录. 这么做没什么不好, 而且很清晰. 问题出在以后如果你有需要写别的程序时调用了新的版本, 或者是别的程序员升级了包, 很容易把你的程序也搞垮.
其实我对virtualenv一开始没什么兴趣. 为什么呢? 首先我认为virtualenv也不是完美的解决方案, 它只是一个以空间换时间的方法. 可能是受了ant/maven的影响, 我觉得那样更省事一些. 更主要的原因是我很懒, 又不肯学新的东西. 因为学新的东西是要时间的, 学了一样的新知识后还没怎么用更新的东西就又出来了. 这不是学了白学嘛. 所以我把这些工具分成两类. 一种是可以解决新的问题, 另一种是改进当前的解决方法. 我对前一种的态度是没碰到那类问题就不仔细学习, 了解一下就好. 对后一种就要小心一些, 因为这类方法往往有可能存在过度设计的问题, 也就是说理论上它有可能解决得更好一些, 但学习的时间成本更高, 复杂度也更高, 有可能会得不偿失. 所以我会先看看它是不是足够简单, 否则就不学.
virtualenv充分利用了pip. 对于pip, 我以前读James Bennett的文章 "On packaging" 时就不大以为然. 虽然我一直特尊敬James, 他的博客曾是我学Django的最大帮助, 但这篇文章我觉得只是个人喜好. pip和setuptools相比带来的好处实在有限.
但是virtualenv比pip更进了一步. 它的定位相当于Java里的Maven 和最新的ant. 我以前对版本问题不是很在意, 因为我自己只是一个人写程序, 也一直用最新的程序版本. 但是最近的Django1.2出来以后出现了版本不兼容的问题, 而且我用了不少别人的库, 这些程序也出现了版本不兼容的问题. 我在开发机器上测试新的东西出现问题还能接受, 但是到了production环境上就不行了. 全面升级时总是麻烦事. 所以我觉得现在是到了用virtualenv的时候了.
Installation
要是你的Linux repository已经有了virtualenv, 那当然可以直接安装, 例如Ubuntu 10.04,
sudo aptitude install python-virtualenv
要是没有, 如Ubuntu 8.04,
sudo easy_install virtualenv Installing virtualenv script to /usr/bin Installed /usr/lib/python2.5/site-packages/virtualenv-1.5.1-py2.5.egg
如果在share hosting上, 要麻烦一些:
1. #need to setup python in your own folder under your home folder, mkdir -p python2.6/{bin,include,share,lib/python2.6/site-packages} 2. # get virtualenv package wget http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.6.4.tar.gz tar zxvf virtualenv-1.6.4.tar.gz cd virtualenv-1.6.4 /usr/local/bin/python2.6 setup.py install \ --prefix=/home/your_user_name/python2.6/
Setup
创建一个工作环境mysite
virtualenv mysite cd mysite source bin/activate
这时你就发现多了一个环境变量VIRTUAL_ENV. virtualenv还修改了$PATH, 增加了bin/python, 这样以后的pythonpath就优先指定到当前目录环境里. virtualenv还在ENV/bin里安装了pip. 以后再安装新的python包就都装到这下面了, 如pip install html5lib.
清除工作环境
virtualenv --clear mysite
相关工具
virtualenvwrapper 的作用是管理多个不同的虚拟环境, 让创建/删除/拷贝/切换不同工作环境更加方便一些.
installation: sudo pip install virtualenvwrapper
virtualenvwrapper doc
quick tips:
export WORKON_HOME=~/sites source /usr/local/bin/virtualenvwrapper.sh mkvirtualenv env1 mkvirtualenv env2 workon env1 echo $VIRTUAL_ENV
http://log4d.com/2011/11/python-version-script
Linux下Python版本切换脚本
Posted on 2011年11月18日 by alswl
Update 2012-01-01:
请忽略本文,更好的切换版本请使用virtualenv+virtualenvwrapper,回头我会写一篇两者的介绍文章。
公司环境使用Python2.7作为开发版本,GAE需要Python2.5作为开发版本,Arch这个更新狂又自动升级Python版本到3.2。
我之前想找一个Python版本切换的小工具,结果没找到合适的,今天在调GAE的时候,就自己写了一个小脚本。
#!/bin/bash
#FILENAME: trackPointScrolling.sh
#DESC: 切换pytohn版本
#AUTHOR: alswl
#DATE: 2011-11-18
PYTHON=/usr/bin/python
PYTHON25=/usr/local/python2.5/bin/python2.5
PYTHON27=/usr/bin/python2.7
PYTHON3=/usr/bin/python3
if [ $# != 1 ] ; then
echo 参数错误,正确参数为 '5/7/3'
exit
fi
if [ $1 == '5' ]; then
ln -fs $PYTHON25 $PYTHON
elif [ $1 == '7' ]; then
ln -fs $PYTHON27 $PYTHON
elif [ $1 == '3' ]; then
ln -fs $PYTHON3 $PYTHON
else
echo 错误的参数: "$1"
fi
echo 当前Python版本:
echo `python --version`
使用的时候要先修改一下PYTHON25/PYTHON27/PYTHON3指向的位置,然后这个脚本会在/usr/bin/pytohn创建对应的软链接。
我建议把不同版本的Python安装到/usr/local/pythonxx/下面去,以后卸载比较方便,省得去一点点rm。
我又卖弄自己少的可怜的Linux知识了,哈哈。
版权所有 © 2010 转载本站文章请注明: 转载自Log4D
原文链接: http://log4d.com/2011/11/python-version-script
您可以随意地转载本站的文章,但是必须在醒目位置注明来源及本站链接,不可以将本站文章商业化使用,或者修改、转换或者以本作品为基础进行创作。
3a1ff193cee606bd1e2ea554a16353ee
from http://c2.teckoo.com/blog/django/virtualenv.html
======================================================
Virtualenvs with different interpreters
Update 2011-09-27: Turns out virtualenv and virtualenvwrapper support this out of the box. Most of what’s written below is horrifically complex compared to just using the -p switch when you make your virtualenv. You simply need to do this:
$ mkvirtualenv -p /path/to/some/python coolname
That’ll create a new virtualenv called “coolname” that uses /path/to/some/python for it’s Python interpreter. I’ve tested this with PyPy and it worked great.
I don't get the hook_loader error, but it's complaining about lack of DEST_DIR $ mkvirtualenv --python /opt/local/bin/python2.7 Running virtualenv with interpreter /opt/local/bin/python2.7 You must provide a DEST_DIR – wmfox3 Jun 23 '11 at 3:04
Whoops, sorry--left out the key argument! That should be mkvirtualenv --python /path/to/python2.6 env_name. mkvirtualenv makes a folder called "env_name" in your $WORKON_HOME, which gets passed on to virtualenv as its DEST_DIR argument. Without specifying a name, it would have a hard time figuring out where to set things up, that's for sure. – Greg Haskins Jun 23 '11 at 4:48
Duh. I should have caught that. Yes, that worked. Guess the answer is to leave port select to python27 and run mkvirtualenv with the --python flag when I need to use something else. – wmfox3 Jun 25 '11 at 11:37
4 thoughts on “Linux下Python版本切换脚本”
Zhe says:
2011年11月18日 at 22:49
如果你用virtualenvwrapper的话
建立env时使用-p 指明python版本,
然后就可以随时用workon [env名]在不同版本间切换了。
我用virtualenv因为ubuntu包管理对python版本依赖很强。不知道arch里随便改默认python解释器的结果(以前用过一段时间,可惜没有坚持)。
回复
alswl says:
2011年11月19日 at 08:51
@Zhe Arch的依赖没有这么强,我更改Python版本之后,目前还没有出现问题。以前用Ubuntu时候,记得改了版本,会出现apt-get不能使用的情况。
我看了一下virtualenvwrapper文档,准备使用了。
感谢你的建议。
回复
Zhe says:
2011年11月18日 at 20:41
为什么不用virtualenv+virtualenvwrapper呢?
回复
alswl says:
2011年11月18日 at 22:44
@Zhe virtualenv我有在用,我用来管理公司/私人pytohn环境,还没有用来尝试管理python版本。
回复
其实我对virtualenv一开始没什么兴趣. 为什么呢? 首先我认为virtualenv也不是完美的解决方案, 它只是一个以空间换时间的方法. 可能是受了ant/maven的影响, 我觉得那样更省事一些. 更主要的原因是我很懒, 又不肯学新的东西. 因为学新的东西是要时间的, 学了一样的新知识后还没怎么用更新的东西就又出来了. 这不是学了白学嘛. 所以我把这些工具分成两类. 一种是可以解决新的问题, 另一种是改进当前的解决方法. 我对前一种的态度是没碰到那类问题就不仔细学习, 了解一下就好. 对后一种就要小心一些, 因为这类方法往往有可能存在过度设计的问题, 也就是说理论上它有可能解决得更好一些, 但学习的时间成本更高, 复杂度也更高, 有可能会得不偿失. 所以我会先看看它是不是足够简单, 否则就不学.
virtualenv充分利用了pip. 对于pip, 我以前读James Bennett的文章 "On packaging" 时就不大以为然. 虽然我一直特尊敬James, 他的博客曾是我学Django的最大帮助, 但这篇文章我觉得只是个人喜好. pip和setuptools相比带来的好处实在有限.
但是virtualenv比pip更进了一步. 它的定位相当于Java里的Maven 和最新的ant. 我以前对版本问题不是很在意, 因为我自己只是一个人写程序, 也一直用最新的程序版本. 但是最近的Django1.2出来以后出现了版本不兼容的问题, 而且我用了不少别人的库, 这些程序也出现了版本不兼容的问题. 我在开发机器上测试新的东西出现问题还能接受, 但是到了production环境上就不行了. 全面升级时总是麻烦事. 所以我觉得现在是到了用virtualenv的时候了.
Installation
要是你的Linux repository已经有了virtualenv, 那当然可以直接安装, 例如Ubuntu 10.04,
sudo aptitude install python-virtualenv
要是没有, 如Ubuntu 8.04,
sudo easy_install virtualenv Installing virtualenv script to /usr/bin Installed /usr/lib/python2.5/site-packages/virtualenv-1.5.1-py2.5.egg
如果在share hosting上, 要麻烦一些:
1. #need to setup python in your own folder under your home folder, mkdir -p python2.6/{bin,include,share,lib/python2.6/site-packages} 2. # get virtualenv package wget http://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.6.4.tar.gz tar zxvf virtualenv-1.6.4.tar.gz cd virtualenv-1.6.4 /usr/local/bin/python2.6 setup.py install \ --prefix=/home/your_user_name/python2.6/
Setup
创建一个工作环境mysite
virtualenv mysite cd mysite source bin/activate
这时你就发现多了一个环境变量VIRTUAL_ENV. virtualenv还修改了$PATH, 增加了bin/python, 这样以后的pythonpath就优先指定到当前目录环境里. virtualenv还在ENV/bin里安装了pip. 以后再安装新的python包就都装到这下面了, 如pip install html5lib.
清除工作环境
virtualenv --clear mysite
相关工具
virtualenvwrapper 的作用是管理多个不同的虚拟环境, 让创建/删除/拷贝/切换不同工作环境更加方便一些.
installation: sudo pip install virtualenvwrapper
virtualenvwrapper doc
quick tips:
export WORKON_HOME=~/sites source /usr/local/bin/virtualenvwrapper.sh mkvirtualenv env1 mkvirtualenv env2 workon env1 echo $VIRTUAL_ENV
http://log4d.com/2011/11/python-version-script
Linux下Python版本切换脚本
Posted on 2011年11月18日 by alswl
Update 2012-01-01:
请忽略本文,更好的切换版本请使用virtualenv+virtualenvwrapper,回头我会写一篇两者的介绍文章。
公司环境使用Python2.7作为开发版本,GAE需要Python2.5作为开发版本,Arch这个更新狂又自动升级Python版本到3.2。
我之前想找一个Python版本切换的小工具,结果没找到合适的,今天在调GAE的时候,就自己写了一个小脚本。
#!/bin/bash
#FILENAME: trackPointScrolling.sh
#DESC: 切换pytohn版本
#AUTHOR: alswl
#DATE: 2011-11-18
PYTHON=/usr/bin/python
PYTHON25=/usr/local/python2.5/bin/python2.5
PYTHON27=/usr/bin/python2.7
PYTHON3=/usr/bin/python3
if [ $# != 1 ] ; then
echo 参数错误,正确参数为 '5/7/3'
exit
fi
if [ $1 == '5' ]; then
ln -fs $PYTHON25 $PYTHON
elif [ $1 == '7' ]; then
ln -fs $PYTHON27 $PYTHON
elif [ $1 == '3' ]; then
ln -fs $PYTHON3 $PYTHON
else
echo 错误的参数: "$1"
fi
echo 当前Python版本:
echo `python --version`
使用的时候要先修改一下PYTHON25/PYTHON27/PYTHON3指向的位置,然后这个脚本会在/usr/bin/pytohn创建对应的软链接。
我建议把不同版本的Python安装到/usr/local/pythonxx/下面去,以后卸载比较方便,省得去一点点rm。
我又卖弄自己少的可怜的Linux知识了,哈哈。
版权所有 © 2010 转载本站文章请注明: 转载自Log4D
原文链接: http://log4d.com/2011/11/python-version-script
您可以随意地转载本站的文章,但是必须在醒目位置注明来源及本站链接,不可以将本站文章商业化使用,或者修改、转换或者以本作品为基础进行创作。
3a1ff193cee606bd1e2ea554a16353ee
from http://c2.teckoo.com/blog/django/virtualenv.html
======================================================
Virtualenvs with different interpreters
Update 2011-09-27: Turns out virtualenv and virtualenvwrapper support this out of the box. Most of what’s written below is horrifically complex compared to just using the -p switch when you make your virtualenv. You simply need to do this:
$ mkvirtualenv -p /path/to/some/python coolname
That’ll create a new virtualenv called “coolname” that uses /path/to/some/python for it’s Python interpreter. I’ve tested this with PyPy and it worked great.
I don't get the hook_loader error, but it's complaining about lack of DEST_DIR $ mkvirtualenv --python /opt/local/bin/python2.7 Running virtualenv with interpreter /opt/local/bin/python2.7 You must provide a DEST_DIR – wmfox3 Jun 23 '11 at 3:04
Whoops, sorry--left out the key argument! That should be mkvirtualenv --python /path/to/python2.6 env_name. mkvirtualenv makes a folder called "env_name" in your $WORKON_HOME, which gets passed on to virtualenv as its DEST_DIR argument. Without specifying a name, it would have a hard time figuring out where to set things up, that's for sure. – Greg Haskins Jun 23 '11 at 4:48
Duh. I should have caught that. Yes, that worked. Guess the answer is to leave port select to python27 and run mkvirtualenv with the --python flag when I need to use something else. – wmfox3 Jun 25 '11 at 11:37
4 thoughts on “Linux下Python版本切换脚本”
Zhe says:
2011年11月18日 at 22:49
如果你用virtualenvwrapper的话
建立env时使用-p 指明python版本,
然后就可以随时用workon [env名]在不同版本间切换了。
我用virtualenv因为ubuntu包管理对python版本依赖很强。不知道arch里随便改默认python解释器的结果(以前用过一段时间,可惜没有坚持)。
回复
alswl says:
2011年11月19日 at 08:51
@Zhe Arch的依赖没有这么强,我更改Python版本之后,目前还没有出现问题。以前用Ubuntu时候,记得改了版本,会出现apt-get不能使用的情况。
我看了一下virtualenvwrapper文档,准备使用了。
感谢你的建议。
回复
Zhe says:
2011年11月18日 at 20:41
为什么不用virtualenv+virtualenvwrapper呢?
回复
alswl says:
2011年11月18日 at 22:44
@Zhe virtualenv我有在用,我用来管理公司/私人pytohn环境,还没有用来尝试管理python版本。
回复
发表评论
-
python 性能测试(1)-- % vs + vs str.join vs +=
2013-01-15 09:48 1440网上广为流传着"不要使用+" 连接字符串的 ... -
wxpython如何查看某些控件发什么样的命令
2013-01-14 18:15 1507大家知道一些控件Button, List,Checkbox,S ... -
python 当中类的实例也能当函数使?靠__call__!(
2013-01-15 09:48 884python当中的一个class A的实例a1,经常看到有的源 ... -
a py to delete the trailling spaces and replace the "\t" with 4 spaces
2013-01-14 18:17 807#author: 54yuri import os i ... -
Python的lambda函数与排序
2013-01-14 18:16 2344Python的lambda函数与排序 2008-06-19 2 ... -
python把帮助导出到文件当中
2013-01-14 18:16 1229有时候在python 当中使用 import xxx ... -
自定义的模块下一定要加__init__.py , 否则当成普通目录来处理
2013-01-14 18:15 828一工程,结构如下 ├─MyProject ├─MyMo ... -
Python 当中逗号的一处用法
2013-01-13 19:17 1093曾经看到代码当中有一段颇为奇怪,是 b = 111 a = ... -
python的GUI设计理念,被震撼住了
2013-01-13 19:17 5532今天看到(2011-06-18)今天看到一句话,太给力了,给人 ... -
【转帖+改造】django HTTP Request 的调用层次
2013-01-13 19:16 1047from http://kasicass.blog.163.c ... -
【转帖】Understanding Python's "with" statement
2013-01-12 17:56 932Judging from comp.lang.python a ... -
【转帖】利用decorator实现Django表单防重复提交
2013-01-12 17:53 2164背景: 我的用例中不可出现重复的记录,如:下订单,用户填 ... -
python 性能优化当中的几个谬误(1) -- 不要使用'+=' ?
2013-01-12 16:51 26网上广为流传着"不要使用+=" 连接字符串 ...
相关推荐
【虚拟环境管理与Python多版本】 在Python开发中,特别是在处理多个项目时,为了保持环境的隔离和纯净,开发者通常会使用虚拟环境(Virtual Environment)。`virtualenv` 是一个非常实用的工具,它允许创建独立的...
总的来说,`virtualenv` 和 `virtualenvwrapper` 提供了一种高效且可靠的Python环境管理方案,让开发者能够在多个项目之间自由切换,同时避免了依赖冲突带来的困扰。正确使用这两个工具,可以极大地提高开发效率并...
virtualenvwrapper是基于virtualenv扩展的,它提供了一系列的命令行工具,使得在多个项目间切换虚拟环境变得异常简单。这个工具极大地提升了开发者的效率,减少了手动管理虚拟环境的繁琐步骤。 2. **功能特性** -...
这两个工具允许开发者在单一的主机上创建多个独立的Python运行环境,确保每个项目都有其特定的库版本,避免了因依赖冲突带来的问题。 `virtualenv`是一个用于创建隔离Python环境的工具。它通过创建一个单独的Python...
在实际开发中,你可能还会遇到多版本Python之间的依赖问题。pyenv的`pyenv versions`和`pyenv which`命令可以帮助你查看已安装的Python版本以及哪个版本的解释器将执行特定的命令。此外,`pyenv rehash`命令确保所有...
从接触Python以来,一直都是采用 virtualenv 和 virtualenvwrapper 来管理不同项目的依赖环境,通过 workon 、 mkvirtualenv 等命令进行虚拟环境切换,很是愉快。 然而,最近想让项目能兼容更多的Python版本,例如...
虽然pyenv主要负责Python版本的管理,但结合`pyenv-virtualenv`或`pyenv-virtualenvwrapper`,可以进一步实现虚拟环境的创建和管理。这些插件使得每个项目都能拥有独立的Python环境,隔离项目之间的依赖关系。 - ...
本文将详细介绍如何在 Python 中配置和管理虚拟环境,主要涉及 virtualenv 和 virtualenvwrapper 这两个工具。 首先,我们要安装 `virtualenv`。在终端或命令提示符中,输入以下命令来安装它: ``` pip install ...
总之,Python的virtualenv和virtualenvwrapper提供了强大的环境隔离功能,使得开发者能够在同一个机器上同时进行多个项目的开发,而不用担心它们之间的依赖关系互相干扰。了解和熟练使用这两个工具,对于提升开发...
在Linux系统中,`virtualenv` 是一个用于创建独立Python环境的工具,而 `virtualenvwrapper` 则是它的扩展,提供了更便捷的管理和操作虚拟环境的命令。以下是对如何在Linux上安装和使用`virtualenv`和`...
标题中的“selenium和pyautogui的python3.8.7-32虚拟环境包”指的是一款基于Python 3.8.7 32位版本的虚拟环境,该环境预装了`selenium`和`pyautogui`这两个库。在Python开发中,虚拟环境是一个独立的Python环境,...
Python virtualenv是一个强大的工具,它允许开发者在独立的环境中安装和管理不同的Python版本以及相关的库,从而避免不同项目之间的依赖冲突。在Python开发中,尤其是大型项目或有多个项目同时进行时,使用...
很多版本切换教程都是py2和py3切换,并且是改exe名称来的,会发现pip不是那么好用。对个人实际也不是那么靠谱 本教程:win10下pytharm管理多个python3.x版本(已有py3.5主版本,副版本py36和py37的安装及使用) 一、...
它允许我们在单独的环境中安装不同的Python版本和包,避免不同项目之间的依赖冲突。在本文中,我们将深入探讨virualenv的安装与使用,以及如何通过virtualenvwrapper进行更高效的环境管理。 首先,我们来看...
自动切换Python Virtualenv zsh-autoswitch-virtualenv是一个简单快捷的ZSH插件,当您在目录之间移动时,它会自动切换python virtualenvs。 zsh-autoswitch-virtualenv还可以自动检测并激活Pipenv和Poetry项目,而...
`virtualenvwrapper`简化了虚拟环境的管理,使得在多个项目之间切换变得更加便捷。 总结来说,Python的虚拟环境是通过`virtualenv`或`virtualenvwrapper`工具实现的,它们帮助开发者保持项目环境的纯净,避免因依赖...
- **virtualenvwrapper**:这是一组扩展virtualenv功能的工具集,提供了更多的便利性,如快速激活和删除环境等。 #### 包管理 包管理是Python开发中不可或缺的一部分,这些工具可以帮助我们高效地安装、更新和管理...
通过virtualenv和virtualenvwrapper,Deepin用户可以轻松地管理多个Python项目的独立环境,避免了不同项目间因库版本不兼容而产生的问题。使用这些工具,你可以更专注于项目本身,而不是环境的配置。记得适时更新和...