No hay forma de hacer esto como un solo paso, pero es fácil de hacer como un proceso de dos pasos.
Uso:
python bootstrap.py
./bin/buildout install cython
./bin/cpy bootstrap.py
./bin/cpy ./bin/buildout
La razón de que esto es posible es porque buildout soporta una opción oscura 'instalar', que nadie habla, pero puede usarlo, así:
[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}
Lo bueno de este enfoque es que ejecutar buildout por segunda vez borra el directorio bin, así que al final del día, te queda un directorio bin que l ooks como este:
$ ls bin/
buildout garden py
hay paquetes sobrantes que pueden o no pueden quedarse en su virtualenv y enredar las cosas más adelante. Por eso estamos usando buildout en primer lugar, ¿verdad?
... por supuesto, si quiere que cython se quede, también lo pega en las dependencias de la parte superior.
¿Estás seguro de que Cython está instalado correctamente y has establecido la variable de entorno 'PYTHONPATH' para incluir el directorio donde viven los módulos de Cython? –
¿Quiso decir a nivel del sistema? Esto hará que este buildout no sea posible de implementar en un sistema sin cython ...? –
¿Qué quiere decir con "nivel de sistema"? –