使用virtualenv和pip的工作流程
我在我的系统上已经安装了python2.6和django1.2.3(Ubuntu 10.x)。
这是我大多数项目使用的环境。但是对于某些项目,我需要一个独立的环境,可能需要不同版本的django、一些额外的python模块,有时候甚至需要不同的python版本。
所以,我现在想使用pip和virtualenv,但我无法更改python和django的版本。我是否需要删除默认的设置,并把所有现有项目都放到一个虚拟环境里?我能避免这样做吗?即使我这样做了,怎么指定一个不同版本的python呢?
如果我必须删除旧的设置,我该怎么做?我现在大部分东西都安装在/usr/local/lib/python2.6/dist-packages/
,但我不确定是否还有其他地方安装了东西。
如果我有一个完全干净的环境,只有Ubuntu,理想的工作流程是什么?是这个吗?
Install python
$ sudo apt-get install python-setuptools
$ sudo apt-get install python-virtualenv
$ sudo easy_install pip
$ sudo pip install virtualenvwrapper
3 个回答
你可以使用 virtualenv --no-site-packages ENVNAME
这个命令,这样可以确保你电脑上默认的Django不会被包含在你新创建的环境里。
如果你想安装不同版本的Python,可以 参考一下superuser.com上的这些说明。
我安装了我需要的所有Python版本(包括2.4、2.5、2.6、2.7、3.1和3.2),都是从源代码安装的。这是最好的做法,这样就不会搞乱系统自带的Python。
我把它们安装在/opt目录下。像这样(首先你需要安装一些Ubuntu的包):
./configure --prefix /opt/pythonxx
make -j2; make install # j2 is a nice trick there for dualcores not everyone knows.
然后我为每个版本安装我需要的东西。我先安装Distribute:
wget http://nightly.ziade.org/distribute_setup.py
/opt/pythonxx/bin/python distribute_setup.py
(除了Python 3需要用distribute_setup3.py)然后我可以安装pip
/opt/pythonxx/bin/easy_install pip
还有virtualenv:
/opt/pythonxx/bin/pip install virtualenv
(Python 3用virtualenv3或virtualenv5)
就这样!如果我想用Python 2.4创建一个虚拟环境,我可以这样做:
/opt/python24/bin/virtualenv foobar
用Python 2.7也是一样:
/opt/python27/bin/virtualenv foobar
运行python只需要:
/opt/python24/bin/python
等等。我从来不在上面提到的Python版本中安装其他东西,除了这些模块,还有PIL(因为PIL很麻烦,但现在有了Pillow,所以你也不需要再处理这个了)。我使用zc.buildout和virtualenv来保持这些Python环境的干净。
你想要做的是:
virtualenv --python=/path/to/python/version --no-site-packages ENV_NAME
举个例子:
virtualenv --python=/usr/bin/python2.6 --no-site-packages my_project_env
如果你在你的项目中按照这个方法去做,你应该能够为每个项目设置一个单独的配置。