所以,我想今年开始使用 virtualenv。我喜欢 no-site-packages 选项,这很好。但是我想知道如何将某些软件包安装到每个 virtualenv 中。例如,假设我想将 django 安装到每个 virtualenv 中……这可能吗,如果可以,怎么做?buildout 能解决这个问题吗?
好吧,与其说是 django,不如说是 django 应用程序...我不介意在每个 virtualenv 中安装一个 django 版本...我只是想知道是否有一些“无站点包”的中间选项
所以,我想今年开始使用 virtualenv。我喜欢 no-site-packages 选项,这很好。但是我想知道如何将某些软件包安装到每个 virtualenv 中。例如,假设我想将 django 安装到每个 virtualenv 中……这可能吗,如果可以,怎么做?buildout 能解决这个问题吗?
好吧,与其说是 django,不如说是 django 应用程序...我不介意在每个 virtualenv 中安装一个 django 版本...我只是想知道是否有一些“无站点包”的中间选项
我知道你从哪里来的无站点选项。我想使用 pip freeze 来生成需求列表,并且不希望站点包中有很多多余的东西。我还需要使用多个版本的 django,因为我有尚未升级的遗留项目(一些旧的 svn 结帐(pre1.0)、一些 1.0 和一些新的 svn 结帐)。在全局站点包中安装 Django 并不是一个真正的选择。
相反,我有一个 django 文件夹,其中包含发布和几个不同的 svn 版本,并且只是符号链接到本地站点包中的适当版本。为了便于使用,我链接到与环境相同级别的本地站点包,然后链接到适当的 django 目录和我需要的任何其他“系统”样式包(通常只是 PIL)。所以:
$ virtualenv pyenv
$ ln -s ./pyenv/lib/python2.5/site-packages ./installed
$ ln -s /usr/lib/python2.5/site-packages/PIL ./installed
$ ln -s /opt/django/django1.0svn/trunk/django ./installed
现在以下工作:
$ source pyenv/bin/activate
$ python
> import django
> import PIL
如果你想让 django 安装在每个 virtualenv 上,你还不如将它安装在 site-packages 目录中?只是一个想法。
我建议使用virtualenv
'引导支持。这允许您在创建 virtualenv 后执行任意 Python,例如安装新包。
另一种选择(我用过的)是在创建虚拟环境后easy_install Django。这很容易编写脚本。您付出的代价是在您的每个虚拟环境中等待 Django 安装。
不过,我和 Toby 在一起:除非有令人信服的理由,你必须在每个虚拟环境中拥有一个单独的 Django 副本,否则你应该考虑将它安装在你的主要 Python 区域,并允许每个虚拟环境从那里使用它.
我想看看这个项目:
http://www.stereoplex.com/two-voices/fez-djangoskel-django-projects-and-apps-as-eggs
可能是我的答案......