我正在使用 buildout 和 virtualenv 的组合来在 python 中设置一个隔离的开发环境,允许进行可重复的构建。
有一个构建方法可以让您将 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
当我执行 vp 时,我得到了一个交互式的、隔离的 python 对话框,正如预期的那样(无法从系统加载任何包)。我现在期望的是,如果我跑步
./bin/script
使用了隔离的 python 解释器。但它没有,它不像“vp”那样被隔离(这意味着我可以从系统级别导入库)。但是我可以运行:
./bin/vp ./bin/script
它将如我所愿在隔离环境中运行脚本。但是必须有一种方法可以在不链接命令的情况下指定这样做,否则 buildout 只能解决我希望的一半问题:)
谢谢你的帮助!帕特里克