扩建和VIRTUALENV(Buildout and Virtualenv)

2019-08-18 02:10发布

我瞎搞与扩建和virtualenv中的组合设置一个隔离的开发环境,蟒蛇,它允许做重复性的基础之上。

有用于扩建一个食谱,让你融入到virtualenv中扩建的:

 tl.buildout_virtual_python

有了这个我buildout.cfg看起来是这样的:

[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/:

vp
script

当我执行副总裁,我得到一个交互式的,孤立的蟒蛇对话框,按预期(无法加载系统的所有包)。 我现在所期待的是,如果我跑

./bin/script 

该分离python解释被使用。 但它没有,它不是孤立的“VP”的(意思是我可以导入从系统级库)。 不过,我可以运行:

./bin/vp ./bin/script

这将运行该脚本在一个孤立的环境,我想。 但一定要指定这个没有链接命令,否则扩建这样做的方式既解决了我希望:)一半问题

谢谢你的帮助! 帕特里克

Answer 1:

你不需要的virtualenv:扩建已经提供了一个独立的环境,就像virtualenv中。

作为一个例子,看看文件生成扩建中的bin目录。 他们会碰到这样的:

import sys
sys.path[0:0] = [
     '/some/thing1.egg',
     # and other things
     ]

所以sys.path相同的隔离方法的virtualenv:被完全想要的扩建有路径所取代。



Answer 2:

zc.buildout 2.0更高版本不再提供隔离的环境

但是的virtualenv 1.9和更高版本提供完全隔离(包括未安装setuptools)。

因此,要得到一个完整的控制环境中的扩建的最简单方法是执行下列步骤(即这里的Python 2.7):

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/

  • 如果在你的扩建任何版本引脚,确保它们不会销扩建本身或配方/扩展与zc.buildout 2或更高版本不兼容的版本。



Answer 3:

一直在使用引导Ubuntu的服务器上运行的问题扩建,从此我使用的virtualenv和扩建在一起。 只需创建virualenv并在其中安装扩建。 这样,只有具有virtualenv中被安装到系统中(理论上1)。

$ virtualenv [options_you_might_need] virtual
$ source virtual/bin/activate
$ pip install zc.buildout
$ buildout -c <buildout.cfg>

还告诉扩建把它的脚本在虚拟/ bin /目录下,这样的脚本出现在$PATH

[buildout]
bin-directory = ${buildout:directory}/virtual/bin
...

1:在实践中,你可能会需要什么样的鸡蛋需要编译那些需要编译系统的水平。 鸡蛋MySQL或内存缓存。



Answer 4:

我以前从来没有使用的配方,但我会尝试的第一件事情是这样的:

[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和脚本)在文本编辑器打开脚本,看看他们正在使用的Python的路径。 如果你在Windows上通常会有一个名为<script_name>-script.py 。 在这种情况下,这将是vp-script.py和script-script.py。



文章来源: Buildout and Virtualenv