web-dev-qa-db-fra.com

Meilleure façon d'exécuter du code Julia dans un cahier IPython (ou du code Python dans un cahier IJulia)

Mon objectif est de n'exécuter que quelques lignes de Julia dans un cahier IPython où la majorité du code sera en Python pour certaines expériences ...

J'ai trouvé un bel exemple de cahier ici: 

http://nbviewer.ipython.org/github/JuliaLang/IJulia.jl/blob/master/python/doc/JuliaMagic.ipynb

Et maintenant je me demande comment installer l'extension IPython pour Julia (j'utilise principalement IPython 2.1) afin de pouvoir la charger via

%load_ext Julia.magic

Je suis également très nouveau chez Julia et je me demande s’il existe un avantage en termes de performances consistant à "mélanger numpy et Julia", comme indiqué dans ce carnet (par rapport à Python numpy ou au code Julia).

Si je comprends bien le concept, j’utiliserai les blocs-notes IJulia (que j’ai configurés avec succès) si je ne souhaite utiliser que du code Julia?

J'ai installé IJulia, et je peux aussi utiliser des blocs-notes IJulia, mais je ne voulais en fait avoir qu'une petite partie du code de Julia dans mon bloc-notes, le reste devrait être Python/Cython . Malheureusement, j'ai lu que les fonctions magiques n'étaient pas encore disponibles. entièrement pris en charge: "Une différence par rapport à IPython réside dans le fait que le noyau IJulia ne prend actuellement pas en charge les" magics ", qui sont des commandes spéciales précédées du préfixe% ou %% pour exécuter du code dans un autre langage." 

Existe-t-il un moyen d'exécuter du code Python dans les blocs-notes IJulia?

27
Sebastian

Si vous souhaitez exécuter un bloc-notes entier de seulement Julia (ou si vous appelez d'autres langues uniquement depuis Julia), il existe une solution plus propre. Tout d'abord, lancez Julia et faites

Pkg.add("IJulia")

pour obtenir le package IJulia. Ensuite vous pouvez

ipython notebook --profile Julia

et votre ordinateur portable aura Julia comme langue native (par défaut).

h/t à David Sanders et ses excellents tutoriels Julia qui sont écrits dans des cahiers IPython; vidéo ici

8
David Ketcheson

Une autre option consiste à utiliser Beaker . Ils ont un cahier de tutoriel disponible qui mélange R et Python; Utiliser Julia est tout aussi facile.

8
Jeff Hammerbacher

Pour compléter cette bonne réponse , Sans aucun hack et sans modifier aucun fichier système, une solution simple est avec le %%script magique :

In [1]: %%script Julia
   ...: println("Hi from a Julia sub-process")
   ...: a = [1:10]

Veillez à ce que la cellule ait été exécutée dans un sous-processus. Ainsi, tout ce qui a été fait dans celle-ci n'est pas accessible par le reste de la session 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
2
Næreen

Une méthode propre et agréable est décrite dans ce carnet: https://github.com/binder-examples/Julia-python/blob/master/python-and-Julia.ipynb .

Il utilise fortement la magie IPython (%Julia <Julia code> inséré en Python et cellules %%Julia), mais le résultat est assez impressionnant: les deux processus Python et Julia peuvent utiliser les mêmes variables et la même mémoire.

0
Næreen