7

我正在尝试完全切换到 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'>
>>> 

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

4

3 回答 3

9

您可以通过以下两个指令之一告诉 buildout 是否要使用站点包:include-site-packagesallowed-eggs-from-site-packages

从构建文档

然后,您可以使用 include-site-packages = false 和 exec-sitecustomize = false 构建选项来消除对 Python 站点包的访问,并且不执行其 sitecustomize 文件(如果存在)。

或者,您可以使用 allowed-eggs-from-site-packages 构建选项作为可能来自站点包的鸡蛋的全局感知白名单。此值默认为“*”,接受所有鸡蛋。

于 2011-01-30T19:18:12.817 回答
3

两种方式:

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

  • 运行带有 -s 标志的引导命令:python bootstrap.py -s,这意味着“没有站点包”。

于 2011-01-30T19:48:52.820 回答
0

我在 buildout 1.5 之前使用的一种替代方法,它带有从系统 python 中排除鸡蛋的选项是

虚拟环境

我们编写了一个创建环境的 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 隔离

于 2011-02-07T19:03:45.267 回答