Нет способа сделать это за один шаг, но это легко сделать за два шага.
Использование:
python bootstrap.py
./bin/buildout install cython
./bin/cpy bootstrap.py
./bin/cpy ./bin/buildout
Причина, по которой это возможно, заключается в том, что buildout поддерживает скрытый параметр 'install', о котором никто никогда не говорит, но вы можете использовать его, например:
[buildout]
parts = deps py # <---- Notice we don't depend on cython here
eggs =
whatever
kdist
nark
kivy # <--- But we do have a module that requires cython to build
develop =
.
lib/nark
lib/kivy-dist
[cython] # <---- By calling ./bin/buildout install cython we trigger this
recipe = zc.recipe.egg:script
parts = cython-py
interpreter = cpy # <--- Which makes our dummy ./bin/cpy
eggs =
cython
pyinstaller
[deps]
recipe = zc.recipe.egg:eggs
eggs = ${buildout:eggs}
[py]
recipe = zc.recipe.egg:script
interpreter = py
eggs = ${buildout:eggs}
Самое приятное в этом подходе заключается в том, что при запуске buildout во второй раз очищается каталог bin , поэтому в конце дня у вас останется каталог bin, который выглядит следующим образом:
$ ls bin/
buildout garden py
Никаких оставшихся пакетов, которые могут зависеть или не зависать в вашем virtualenv, а потом все испортить. Вот почему мы используем buildout в первую очередь, верно?
... конечно, если вы хотите, чтобы cython зависал, просто вставьте его в зависимости вверху.