我瞎搞与扩建和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
这将运行该脚本在一个孤立的环境,我想。 但一定要指定这个没有链接命令,否则扩建这样做的方式既解决了我希望:)一半问题
谢谢你的帮助! 帕特里克
你不需要的virtualenv:扩建已经提供了一个独立的环境,就像virtualenv中。
作为一个例子,看看文件生成扩建中的bin目录。 他们会碰到这样的:
import sys
sys.path[0:0] = [
'/some/thing1.egg',
# and other things
]
所以sys.path
相同的隔离方法的virtualenv:被完全想要的扩建有路径所取代。
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
前提条件:
一直在使用引导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或内存缓存。
我以前从来没有使用的配方,但我会尝试的第一件事情是这样的:
[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。