La mejor manera de ejecutar código Julia en un cuaderno IPython (o código Python en un cuaderno IJulia)
Mi objetivo es ejecutar solo unas pocas líneas de Julia en un cuaderno IPython donde la mayoría del código será Python para algunos experimentos ...
Encontré un buen ejemplo de cuaderno aquí:
Http://nbviewer.ipython.org/github/JuliaLang/IJulia.jl/blob/master/python/doc/JuliaMagic.ipynb
Y ahora me pregunto cómo instalaría la extensión IPython para Julia (estoy usando principalmente IPython 2.1) para que pueda cargarla a través de
%load_ext julia.magic
También estoy muy nuevo para julia y me pregunto si hay un beneficio de rendimiento de "mezclar numpy y julia" como se muestra en este cuaderno (sobre el código regular numpy de Python o regular Julia)
Cuando entiendo el concepto correctamente, usaría IJulia notebooks (que configuré con éxito) si solo estoy interesado en ejecutar Julia code?
Instalé IJulia, y también puedo ejecutar IJulia notebooks, pero en realidad solo quería tener una pequeña porción de código de Julia en mi cuaderno, el resto debería ser Python / Cython. Desafortunadamente, he leído que las funciones magic aún no están completamente soportadas: "Una diferencia con IPython es que el núcleo IJulia actualmente no soporta" magics", que son comandos especiales con el prefijo % o %% para ejecutar código en un lenguaje diferente "
¿Hay alguna forma de ejecutar código Python en los cuadernos de IJulia?
5 answers
Ejecutar Julia dentro de un cuaderno IPython
Hack
Para ejecutar fragmentos de Julia (o otro lenguaje) dentro de un cuaderno IPython, simplemente añado la cadena 'julia'
a la default
lista en el método _script_magics_default
de la clase ScriptMagics
en:
-
/usr/lib/python3.4/site-packages/IPython/core/magics/script.py
o -
/usr/lib/python2.7/site-packages/IPython/core/magics/script.py
.
Ejemplo:
# like this:
defaults = [
'sh',
'bash',
'perl',
'ruby',
'python',
'python2',
'python3',
'pypy',
'julia', # add your own magic
]
- Cuaderno de ejemplo (usando Python3)
Para usar %load_ext julia.magic
, tendría que ejecutar el setup.py
aquí:
Actualizar (09/04/2014): el archivo setup.py
se ha movido a pyjulia.jl:
Que obtienes cuando Pkg.add("IJulia")
clona el repositorio en tu sistema de archivos:
cd ~/.julia/v0.3/IJulia/python/
sudo python2 setup.py install
Actualmente esto solo funciona para mí en Python2. Python3 se queja de:
ImportError: No module named 'core'
Cuando lo intento para cargar la extensión, pero se instala sin quejas.
Después de instalarlo, también puede hacer esto desde dentro de Python2:
from julia import Julia
j = Julia()
arr = j.run('[1:10]')
type(arr) # numpy.ndarray
Ejecutar un script desde su sistema shell
Use la sintaxis de modo shell en una celda de notebook:
!julia my_script.jl
Ejecutar Python dentro de IJulia notebook
Utilizando PyCall
No es realmente ejecutando código python en el contexto que desee, pero también puede usar bibliotecas Python desde Julia:
using PyCall
@pyimport math
println(math.pi)
Ejecutar un script desde su sistema shell
Utilice la sintaxis de modo shell en un cuaderno celda:
;python my_script.py
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-05 05:44:12
Otra opción es usar Vaso de precipitados. Tienen un cuaderno tutorial disponible que mezcla R y Python; usar Julia es igual de fácil.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-10 16:52:02
Si desea ejecutar un cuaderno completo de solo julia (o donde llame a otros idiomas solo desde julia), entonces hay una solución más limpia. En primer lugar, lanzar julia y hacer
Pkg.add("IJulia")
Para obtener el paquete IJulia. Entonces usted puede
ipython notebook --profile julia
Y su cuaderno tendrá a julia como idioma nativo (predeterminado).
H/t a David Sanders y sus excelentes tutoriales de juliaque están escritos en cuadernos de IPython; video aquí.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-29 13:40:00
Para completar esta buena respuesta , sin ningún hackeo, y sin modificar ningún archivo del sistema, una solución simple es con la %%script
magia :
In [1]: %%script julia
...: println("Hi from a Julia sub-process")
...: a = [1:10]
Tenga cuidado de que la celda se ejecute en un subproceso, por lo que lo que se hizo en ella es no accesible por el resto de la sesión de IPython:
In [2]: print("Hi from the main IPython process")
...: print(a) # <-- not available from the Julia code, will fail !
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-2-c5a4f3535135> in <module>()
----> 1 print(a)
NameError: name 'a' is not defined
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-23 13:32:51
Un método limpio y agradable se describe en este cuaderno: https://github.com/binder-examples/julia-python/blob/master/python-and-julia.ipynb .
Utiliza fuertemente IPython magic (%julia <julia code>
inlineado en Python, y %%julia
celdas), pero el resultado es bastante impresionante: los dos procesos Python y Julia pueden usar las mismas variables y memoria.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-26 06:10:55