Best way to run Julia code in an IPython notebook (or Python code in an IJulia notebook)
我的目标是在IPython笔记本中只运行几行Julia,其中大部分代码都是Python用于某些实验......
我在这里找到了一个很好的示例笔记
http://nbviewer.ipython.org/github/JuliaLang/IJulia.jl/blob/master/python/doc/JuliaMagic.ipynb
现在我想知道如何为Julia安装IPython扩展(我主要使用IPython 2.1),以便我可以通过
1 | %load_ext julia.magic |
我也是julia的新手,我想知道是否有"混合numpy和julia"的性能优势,如本笔记本所示(通过常规Python numpy或常规Julia代码)
当我正确理解这个概念时,如果我只对运行Julia代码感兴趣,我会使用IJulia笔记本(我成功设置)吗?
我安装了IJulia,我也可以运行IJulia笔记本,但实际上我只想在笔记本中加入一小部分Julia代码,其余的应该是Python / Cython。
不幸的是,我读到魔术函数还没有被完全支持:"与IPython的一个区别是IJulia内核目前不支持"magics",它是以%或%%为前缀的特殊命令,用于执行不同语言的代码"
有没有办法在IJulia笔记本中运行Python代码?
在IPython笔记本中运行Julia
劈
为了在IPython笔记本中运行Julia片段(或其他语言),我只需将字符串
-
/usr/lib/python3.4/site-packages/IPython/core/magics/script.py 或 -
/usr/lib/python2.7/site-packages/IPython/core/magics/script.py 。
例:
1 2 3 4 5 6 7 8 9 10 11 12 | # like this: defaults = [ 'sh', 'bash', 'perl', 'ruby', 'python', 'python2', 'python3', 'pypy', 'julia', # add your own magic ] |
- 示例笔记本(使用Python3)
朱莉娅魔术(双向)
要使用
更新(2014年4月9日):
- https://github.com/JuliaLang/pyjulia
<击>
当
1 2 | cd ~/.julia/v0.3/IJulia/python/ sudo python2 setup.py install |
击>
目前这仅适用于Python2。 Python3抱怨:
1 | ImportError: No module named 'core' |
当我尝试加载扩展时,但安装没有抱怨。
安装后,您也可以在Python2中执行此操作:
1 2 3 4 | from julia import Julia j = Julia() arr = j.run('[1:10]') type(arr) # numpy.ndarray |
- http://blog.leahhanson.us/julia-calling-python-calling-julia.html
从系统shell运行脚本
在笔记本单元格中使用shell模式语法:
1 | !julia my_script.jl |
在IJulia笔记本中运行Python
使用PyCall
它并不是真正在你想要的上下文中运行python代码,但你也可以在Julia中使用Python库:
1 2 3 | using PyCall @pyimport math println(math.pi) |
- https://github.com/stevengj/PyCall.jl
从系统shell运行脚本
在笔记本单元格中使用shell模式语法:
1 | ;python my_script.py |
- http://julia.readthedocs.org/en/latest/manual/interacting-with-julia/?highlight=shell#shell-mode
如果你想运行一个只有julia的整个笔记本(或者你只从julia调用其他语言),那么有一个更清洁的解决方案。首先,启动julia并做
1 | Pkg.add("IJulia") |
获得IJulia包。然后你可以
1 | ipython notebook --profile julia |
并且您的笔记本将julia作为本机(默认)语言。
不是David Sanders和他用IPython笔记本写的优秀的julia教程;视频在这里。
另一种选择是使用Beaker。他们有一个混合R和Python的教程笔记本;使用Julia同样容易。
要完成这个好的答案,没有任何黑客攻击,并且没有修改任何系统文件,一个简单的解决方案就是使用
1 2 3 | In [1]: %%script julia ...: println("Hi from a Julia sub-process") ...: a = [1:10] |
请小心细胞是在子进程中运行的,因此其余的IPython会话无法访问其中的任何内容:
1 2 3 4 5 6 7 8 | 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 |
这个笔记本中描述了一个干净漂亮的方法:https://github.com/binder-examples/julia-python/blob/master/python-and-julia.ipynb。
它强烈使用IPython魔术(