A zc.buildout扩展,用于解决使用自己构建的python的鸡生蛋问题
项目描述
使用buildout提供的Python重新运行buildout
Buildout 2.0不再支持在单个buildout中使用多个Python版本。此扩展通过首先构建指定的Python部分及其依赖项,然后使用可执行文件重新调用buildout,使其成为可能使用‘另一个单一’版本的Python。
用法
需要一个用于构建Python的部分。您需要通过在buildout部分中指定python参数来指定它,这与buildout 1.x相同。Python部分必须提供可执行选项,该选项给出Python可执行文件的路径。
并在buildout部分中添加slapos.rebootstrap到extensions参数。
使用任何Python来引导和运行buildout。如果此扩展检测到用于运行buildout的sys.executable与python部分中提供的可执行文件不同,它将尝试找到此可执行文件。如果它不存在,它将安装此部分,然后使用新的Python可执行文件重新安装buildout。后续的buildout运行将继续使用新的Python。
示例配置文件和调用
[buildout] extensions = slapos.rebootstrap python = slapospython parts = realrun [slapospython] recipe = plone.recipe.command stop-on-error = true bin_dir = ${buildout:parts-directory}/${:_buildout_section_name_}/bin executable = ${:bin_dir}/python command = mkdir -p ${:bin_dir} && cp -f /usr/bin/python ${:executable} [realrun] recipe = plone.recipe.command command = echo Running with python ${buildout:executable} update-command = ${:command}
引导和运行此buildout后,它将打印
使用python /path/to/buildout/parts/slapospython/bin/python运行
运行测试
此包的测试可以像以下这样运行
$ python setup.py test
请注意,需要干净的Python环境 - 最好的是buildout或virtualenv提供的,不带site包。
变更
4.7 (2024-05-22)
停止使用已弃用的setuptools.easy_install
导入时检查zc.buildout版本
统一rebootstrap机制
4.6 (2024-03-26)
添加对slapos.buildout >= 3.0.1+slapos001的支持
支持从tar.gz安装setuptools
删除无效的zc.buildout>=2.7.1+slapos001要求
删除zc.buildout的无用monkey-patch
4.5 (2020-04-22)
添加对slapos.buildout >= 2.7.1+slapos004的支持
在rebootstrap时重置环境变量
4.4 (2020-02-17)
添加对Python >= 3.6的支持
4.3 (2019-12-10)
更新zc.buildout依赖关系为2.7.1+slapos*
4.2 (2019-10-10)
支持由不需要安装的部分提供的Python。这修复了从外部slapos共享部分安装的slapos软件发布版的安装问题。
4.1 (2017-06-06)
修复MANIFEST.in:一些文件丢失。
4.0 (2017-06-05)
完全重实现
完全就地工作,即使是切换到不同的Python版本。
更新bin/buildout,以便在后续的buildout运行中立即使用所需的Python。
对于SlapOS,第二点是必需的,以确保使用构建的Python进行实例化。
3.10 (2017-03-15)
删除zc.buildout版本锁定,以防止版本更改时的循环。
3.9 (2017-03-15)
在reboot()中删除zc.buildout版本锁定,以防止版本更改时的循环。
3.8 (2017-03-13)
仅在设置buildout:rebootstrap-directory时使用专用rebootstrap目录。
3.7 (2016-08-18)
保留bin-directory,以便在适当的位置生成bin/buildout。
3.6 (2016-06-30)
为使用slapos.package的用例添加更多参数。
3.5 (2016-06-10)
在调用新的buildout过程以构建rebootstrap目录时,明确指定Python解释器和配置文件。
3.4 (2016-06-10)
为构建rebootstrap Python使用专用的buildout目录。3.2中的更改是错误的,因为它导致rebootstrap和为不同版本的Python构建的无限循环。
3.3 (2016-01-20)
在_uninstall_part()中忽略MissingSection异常。
3.2 (2015-11-10)
支持zc.buildout >= 2.0.0。
与正常buildout使用相同的部分目录,这样我们可以更快地构建,并使代码更简单。
Python部分现在由buildout部分的python参数指定。
在运行Python部分时自动重启原始Python的功能已被移除。
3.1 (2011-06-24)
在rebootstrap部分的rebootstrap中支持eggs参数,以便为rebootstrapped buildout添加额外的eggs。
3.0 (2011-05-27)
从slapos.tool.rebootstrap 2.4重命名。