Python 如何确保buildout不会';是否不使用已安装的软件包?

Python 如何确保buildout不会';是否不使用已安装的软件包?,python,django,virtualenv,buildout,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 >>> i

我试图完全切换到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'>
>>> 
>cat buildout.cfg
[构建]
零件=django
[django]
配方=zc.recipe.egg
蛋=django
解释器=django
>宾/德扬戈
>>>进口django
>>>德扬戈
>>> 

是否有任何方法可以强制buildout不使用安装在/usr/lib/python2.6中的蛋?

您可以通过以下两条指令之一来判断buildout是否要使用站点包:
包括站点包
允许站点包中的蛋

从构建:

然后,您可以使用include站点包 =false和exec sitecustomize=false取消访问的构建选项 到Python的站点包,而不是 如果需要,请执行其sitecustomize文件 分别存在

或者,您可以使用 允许从现场包装中取出鸡蛋 作为全局感知的构建选项 可能来自的鸡蛋的白名单 网站包。此值默认为 “*”,接受所有鸡蛋

两种方式:

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

  • 使用-s标志运行bootstrap命令:
    python bootstrap.py-s
    ,这意味着“没有站点包”


在buildout 1.5之前,我曾使用过一种替代方法,它提供了从系统python中排除鸡蛋的选项:

虚拟的

我们编写了一个用于创建环境的virtualenv自定义引导,获取bootstrap.py并放入一个minimal 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隔离

这些选项仅在我使用z3c.recipe.scripts而不是zc.recipe.egg时对我有效;我不确定这是否是因为我做错了什么,但也许它会对某些人有用。我只能在构建的pypi页面上找到这条关键信息。文档似乎没有提到它(要么是这样,要么是搜索被破坏了)。为什么这不是默认值令我困惑。但我把它看作是服用类固醇的virtualenv,这可能不是完全的意图。是的,我也觉得这很令人困惑,pypi上的自述文件实际上是完整的文档,
buildout.org/docs
上的文档只涉及很少的主题。@Skirmantas am也有同样的问题。我从dist packages获得了一些python包,从我为项目创建的目录中获得了一些python包,我在buildout.cfg中设置了允许的来自site packages=false的egs,但我还是有问题。