首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Buildout和Virtualenv

Buildout和Virtualenv
EN

Stack Overflow用户
提问于 2009-10-14 16:35:42
回答 3查看 6.6K关注 0票数 14

我正在处理buildout和virtualenv的组合,以便在python中设置一个独立的开发环境,从而允许进行可重复的构建。

有一个构建的方法,让我们将virtualenv集成到buildout:

代码语言:javascript
复制
 tl.buildout_virtual_python

有了这个,我的buildout.cfg如下所示:

代码语言:javascript
复制
[buildout]
develop = .
parts = script
        virtualpython


[virtualpython]
recipe = tl.buildout_virtual_python
headers = true
executable-name = vp
site-packages = false

[script]
recipe = zc.recipe.egg:scripts
eggs = foo
python = virtualpython

这将将两个可执行文件部署到./bin/:

代码语言:javascript
复制
vp
script

当我执行vp时,我会得到一个交互式的、孤立的python对话框,就像预期的那样(无法从系统加载任何包)。我现在所期待的是,如果我跑

代码语言:javascript
复制
./bin/script 

使用了隔离的python解释器。但事实并非如此,它不是孤立的,因为"vp“是(意味着我可以从系统级别导入库)。不过,我可以跑:

代码语言:javascript
复制
./bin/vp ./bin/script

它将按照我的意愿在一个孤立的环境中运行脚本。但是必须有一种方法来指定这样做,而不必链接命令,否则构建只解决了我希望的一半问题:)

谢谢你的帮忙!帕特里克

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-03 20:28:31

您不需要virtualenv: buildout已经提供了一个独立的环境,就像虚拟环境一样。

例如,查看构建在bin目录中生成的文件。他们会有这样的东西:

代码语言:javascript
复制
import sys
sys.path[0:0] = [
     '/some/thing1.egg',
     # and other things
     ]

因此,sys.path被完全替换为构建出来想要在路径上拥有的东西:与virtualenv相同的隔离方法。

票数 8
EN

Stack Overflow用户

发布于 2013-10-24 09:30:35

zc.buildout 2.0和后来的不再提供隔离环境

但是,Virtualenv1.9和更高版本提供了完全的隔离(包括不安装setuptools)。

因此,在完全受控环境中获取构建的最简单方法是运行以下步骤(这里是Python 2.7):

代码语言:javascript
复制
cd /path/to/buildout
rm ./bin/python
/path/to/virtualenv-2.7 --no-setuptools --no-site-packages --clear .
./bin/python2.7 bootstrap.py
./bin/buildout

先决条件:

  • bootstrap.py必须是与您正在使用的构建版本相匹配的最新版本。您将在http://downloads.buildout.org/2/
  • if上找到最新的版本引脚--在您的构建中有任何版本引脚,请确保它们没有插入构建本身或不兼容zc.buildout 2或更高版本的菜谱/扩展。
票数 6
EN

Stack Overflow用户

发布于 2009-10-14 16:56:28

我以前从未用过这个配方,但我要尝试的第一件事是:

代码语言:javascript
复制
[buildout]
develop = .
parts = script
        virtualpython


[virtualpython]
recipe = tl.buildout_virtual_python
headers = true
executable-name = vp
site-packages = false

[script]
recipe = zc.recipe.egg:scripts
eggs = foo
python = virtualpython
interpreter = vp

如果不起作用,通常可以在文本编辑器中打开脚本(在本例中是vp和script),并查看它们使用的Python路径。如果您在windows上,通常会有一个名为<script_name>-script.py的文件。在本例中,这将是vp-script.py和script-script.py。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1567494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档