如何确保buildout不使用已安装的软件包?

时间:2011-01-29 20:20:31

标签: python django virtualenv buildout

我正在尝试完全切换到buildout - 但我们的开发环境已经在/usr/lib/pythonxx/中安装了很多东西

如何确保buildout不使用已安装在系统上的库 - 最终没有virtualenv?

例如 - 如何避免这种行为? :

> cat buildout.cfg
[buildout]
parts = django

[django]
recipe = zc.recipe.egg
eggs = django
interpreter = django

>bin/django 

>>> import django
>>> django
<module 'django' from '/usr/lib/python2.6/site-packages/django/__init__.pyc'>
>>> 

无论如何强制buildout不使用/usr/lib/python2.6中安装的鸡蛋?

3 个答案:

答案 0 :(得分:9)

如果您想使用site-pakages或不使用以下两个指令之一,您可以告诉buildout:include-site-packagesallowed-eggs-from-site-packages

来自buildout documentation

  

然后,您可以使用include-site-packages   = false和exec-sitecustomize = false buildout选项以消除访问   而不是你的Python的网站包   执行其sitecustomize文件,如果它   分别存在。

     

或者,您可以使用   让鸡蛋从 - 站点包   buildout选项作为全局感知   可能来自的鸡蛋白名单   站点包。该值默认为   “*”,接受所有鸡蛋。

答案 1 :(得分:3)

两种方式:

  • 使用最新的1.5.something buildouts:默认情况下它们不使用系统包。

  • 使用-s标志运行bootstrap命令:python bootstrap.py -s,表示“没有站点包”。

答案 2 :(得分:0)

我在buildout 1.5之前使用的一个替代方案,它带有从系统python中排除egg的选项

的virtualenv

我们编写了一个virtualenv自定义引导程序来创建环境,获取bootstrap.py并放置一个最小的buildout.cfg,但你可以正常使用virtualenv:

cd project virtualenv --no-site-packages ./
wget http://...../bootstrap.py 
touch buildout.cfg
source bin/activate
python bootstrap.py
bin/buildout

并且瞧,您的构建与virtualenv隔离