有没有一种简单的方法可以使用zc.buildout将SCons安装为鸡蛋?我最初的想法是,因为它使用distutils我可以使用zc.recipe.egg安装它,并认为鸡蛋将以SCons脚本转到$ {buildout:directory} / bin的方式设置SCons被添加到PYTHONPATH。
[buildout]
parts =
python
[python]
recipe = zc.recipe.egg
interpreter = mython
eggs =
SCons == 2.0.1
不幸的是,我不认为SCons的setup.py是以这样的方式编写的,它与zc.recipe.egg配合得很好。我最终得到了:
如果(2)在PYTHONPATH上并且(4)的内容被复制或链接到bin目录,这将起作用。
理想情况下,我想将它作为一个鸡蛋安装,以利用我的全球egg目录;我不想拥有相同构建工具的多个副本。是否可以使用现有食谱来实现这一目标,还是应该编写自己的食谱?
编辑:我制作了个人副本并修改了SCons的setup.py参数,以便创建一个scons入口点。我做的唯一更改:删除'cmdclass',添加'entry_points'。
arguments = {
'name' : "scons",
...
'scripts' : scripts,
'entry_points' : {
'console_scripts':
['scons = SCons.Script:main']
}
}
这种作品。它给了我一个bin / scons中的scons脚本,但不是sconsign,scons-time或scons.bat。我把它放在/ var / www / eggs中的tar中,并用apache服务。
[buildout]
parts =
python
[python]
recipe = zc.recipe.egg:scripts
interpreter = mython
eggs =
scons == 2.0.1
find-links =
http://localhost/eggs/
不确定我是否想继续这个方向。
答案 0 :(得分:3)
哦,我的。我查看了SCons的setup.py,这有点乱。在Mac上安装时,它甚至只能在/usr/local
中安装。它当然不适合与setuptools一起使用(因此也适用于zc.buildout)。
您可以使用zc.recipe.command
运行带有${buildout:executable} setup.py
的setup.py脚本,并将其配置为安装在parts
子目录中,然后使用单独的部件将所有脚本符号链接到{ {1}}:
bin/
所以,我们完全忽略setuptools,不要建立一个鸡蛋,而只是下载tarball,手动运行[buildout]
parts = scons
[scons-download]
recipe = gocept.download
url = http://prdownloads.sourceforge.net/scons/scons-2.0.1.tar.gz
md5sum = beca648b894cdbf85383fffc79516d18
[scons-install]
recipe = plone.recipe.command
command = ${buildout:executable} ${scons-download:location}/setup.py install --prefix=${buildout:parts-directory}/scons-install
location = ${buildout:parts-directory}/scons-install
[scons]
recipe = cns.recipe.symlink
symlink =
scons
scons-time
sconsign
symlink_base = ${scons-install:location}/bin
symlink_target = ${buildout:bin-directory}
,然后符号链接有趣的部分。