使用virtualenv和pip的工作流程

12 投票
3 回答
10976 浏览
提问于 2025-04-16 09:58

我在我的系统上已经安装了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 个回答

1

你可以使用 virtualenv --no-site-packages ENVNAME 这个命令,这样可以确保你电脑上默认的Django不会被包含在你新创建的环境里。

如果你想安装不同版本的Python,可以 参考一下superuser.com上的这些说明

5

我安装了我需要的所有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环境的干净。

9

你想要做的是:

virtualenv --python=/path/to/python/version --no-site-packages ENV_NAME

举个例子:

virtualenv --python=/usr/bin/python2.6 --no-site-packages my_project_env

如果你在你的项目中按照这个方法去做,你应该能够为每个项目设置一个单独的配置。

撰写回答