web-dev-qa-db-ja.com

IPythonノートブックでJuliaコードを実行する最良の方法(またはIJuliaノートブックでPythonコード)

私の目標は、コードの大部分がPythonいくつかの実験である)IPythonノートブックでJuliaの数行のみを実行することです...

ここでニースのノートブックの例を見つけました:

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

そして今、私はジュリア用のIPython拡張機能(私は主にIPython 2.1を使用しています)をインストールして、

%load_ext Julia.magic

私はジュリアにも非常に新しいので、このノートブックに示されているように(通常のPython numpyまたは通常のJuliaコードよりも)「numpyとJuliaの混合」のパフォーマンス上の利点があるかどうか疑問に思っています。

概念を正しく理解している場合、Juliaコードの実行のみに関心がある場合は、IJuliaノートブック(正常にセットアップしたもの)を使用しますか?

IJuliaをインストールし、IJuliaノートブックも実行できますが、実際にはノートブックにJuliaコードのほんの一部を入れたいだけで、残りはPython/Cythonです。残念ながら、そのマジック関数はまだ完全にはサポートされていません:「IPythonとの1つの違いは、IJuliaカーネルが現在「マジック」をサポートしていないことです。これは、異なる言語でコードを実行するための%または%%が前に付いた特別なコマンドです」

IJuliaノートブックでPythonコードを実行する方法はありますか?

28
user2489252

JuliaをIPythonノートブック内で実行する


ハック

Juliaスニペット(またはother言語)をIPythonノートブック内で実行するには、文字列_'Julia'_をdefaultに追加しますScriptMagicsクラスの__script_magics_default_メソッドのリスト:

  • _/usr/lib/python3.4/site-packages/IPython/core/magics/script.py_または
  • _/usr/lib/python2.7/site-packages/IPython/core/magics/script.py_。

例:

_# like this:
defaults = [
    'sh',
    'bash',
    'Perl',
    'Ruby',
    'python',
    'python2',
    'python3',
    'pypy',
    'Julia', # add your own magic
]
_

IPython *Julia magic*

ジュリアマジック(双方向)

_%load_ext Julia.magic_を使用するには、ここで_setup.py_を実行する必要があります。

更新(09/04/2014):_setup.py_ファイルが移動されましたpyjulia.jl:

Pkg.add("IJulia")がファイルシステムのリポジトリを複製するときに取得するもの:

_cd ~/.Julia/v0.3/IJulia/python/
Sudo python2 setup.py install
_

現在、これはPython2でのみ機能します。 Python3は以下について不満を述べています:

_ImportError: No module named 'core'
_

拡張機能をロードしようとしたが、問題なくインストールされた。

それをインストールした後、Python2内からこれを行うこともできます。

_from Julia import Julia
j = Julia()
arr = j.run('[1:10]')
type(arr) # numpy.ndarray
_

システムからスクリプトを実行するShell

ノートブックセルでShellモードの構文を使用します。

_!Julia my_script.jl
_



実行Python IJulia Notebook内


PyCallの使用

実際にはrunningpython必要なコンテキストのコードですが、Pythonジュリア内:

_using PyCall
@pyimport math
println(math.pi)
_

システムからスクリプトを実行するShell

ノートブックセルでShellモードの構文を使用します。

_;python my_script.py
_
26
SalchiPapa

onlyJulia(またはJuliaからのみ他の言語を呼び出す場所)のノートブック全体を実行する場合は、より明確な解決策があります。まず、ジュリアを起動して

Pkg.add("IJulia")

iJuliaパッケージを取得します。次にできます

ipython notebook --profile Julia

ノートブックにはJuliaがネイティブ(デフォルト)言語として含まれます。

i/D Pythonノートブックで記述されているDavid Sandersとその 優れたJuliaチュートリアル へのh/t; ビデオはこちら

8
David Ketcheson

別のオプションは Beaker を使用することです。 RとPythonを組み合わせた チュートリアルノートブック が利用可能です。 Juliaの使い方も同じくらい簡単です。

8

完成するには この良い答え 、ハックなしで、システムファイルを変更せずに the %%script magic

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

セルがサブプロセスで実行されたことに注意してください。セルで行われたことは、残りの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

クリーンでナイスな方法はこのノートブックで説明されています: https://github.com/binder-examples/Julia-python/blob/master/python-and-Julia.ipynb

IPythonマジック(%Julia <Julia code> Pythonでインライン化、および%%Juliaセル)、しかし、結果は非常に印象的です。2つのPythonおよびJuliaプロセスは、同じ変数とメモリを使用できます。

0
Næreen