knitr – La opción de caché del motor Python no funciona

Yihui da un ejemplo del uso de la opción de caché para los diferentes motores

https://github.com/yihui/knitr-examples/blob/master/023-engine-python.Rmd

Parece que no puedo hacer que funcione para python.

Los siguientes trabajos

```{r,engine='python',cache=TRUE} x=10 print x ``` 

Pero esto no funciona

     ```{r,engine='python',cache=TRUE} x = 10 ``` ```{r,engine='python',cache=TRUE} print x ``` 

    ¿Alguien tiene una idea?

    La cache opciones de trozo no guarda todas las variables definidas en el bloque para otros idiomas que no sean R Sin embargo, se están guardando las salidas impresas, por lo que si calcula algo que lleva un tiempo, no será necesario volver a calcular los resultados. Desde el knitr web de knitr :

    Excepto engine='R' (predeterminado), todos los fragmentos se ejecutan en sesiones separadas, por lo que las variables no se pueden compartir directamente. Si queremos utilizar objetos creados en fragmentos anteriores, normalmente tenemos que escribirlos en archivos (como efectos secundarios). Para el motor bash, podemos usar Sys.setenv() para exportar variables de R a bash (ejemplo).

    Es posible guardar algunos valores en el entorno de la shell y recuperar esos valores de las otras celdas leyendo el entorno. Este es el enfoque que Yihui adoptó en el ejemplo de Polyglot . Entonces, para Python, si puede formatear el valor como una cadena y pasarlo a sys.setenv() , puede usar ese valor en otra celda (ejecutarse como una sesión de Python separada) llamando a sys.getenv() .

    Sin embargo, estoy ligeramente confundido sobre el enfoque adoptado con los motores C y Fortran . Parece que tienen acceso a funciones comstackdas en fragmentos posteriores mediante el uso de alguna función llamada .C() o una función llamada .Fortran() . Pero parece que Python no tiene un equivalente.