在IPython笔记本中运行Julia代码的最佳方法(或IJulia笔记本中的Python代码)

时间:2014-06-06 22:11:02

标签: python ipython julia

我的目标是在IPython笔记本中只运行几行Julia,其中大部分代码都是Python用于某些实验......

我在这里找到了一个很好的示例笔记本:

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

现在我想知道如何安装Julia的IPython扩展(我主要使用IPython 2.1),以便我可以通过

加载它
%load_ext julia.magic

我也是朱莉娅的新手,我想知道是否有混合numpy和julia的性能优势"如本笔记本所示(通过常规Python numpy或常规Julia代码)

当我正确理解这个概念时,如果我只对运行Julia代码感兴趣,我会使用IJulia笔记本(我成功设置)吗?

我安装了IJulia,我也可以运行IJulia笔记本,但实际上我只想在笔记本中加入一小部分Julia代码,其余部分应该是Python / Cython。 不幸的是,我读到魔术功能尚未得到完全支持:"与IPython的一个区别是IJulia内核目前不支持" magics",它们是以%或%%为前缀的特殊命令用不同的语言执行代码"

有没有办法在IJulia笔记本中运行Python代码?

5 个答案:

答案 0 :(得分:26)

在IPython笔记本中运行Julia


哈克

为了在IPython笔记本中运行Julia片段(或其他语言),我只需将字符串'julia'附加到 default _script_magics_default类中的ScriptMagics方法中列出:

  • /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*

Julia Magic(双向)

要使用%load_ext julia.magic,您需要在此处运行setup.py

更新(2014年4月9日) setup.py文件已移至pyjulia.jl:

<击> 当Pkg.add("IJulia")克隆文件系统中的repo时得到的结果:

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



在IJulia笔记本中运行Python


使用PyCall

它并不是在你想要的上下文中运行 python代码,但是你也可以在Julia中使用Python库:

using PyCall
@pyimport math
println(math.pi)

从系统 shell

运行脚本

在笔记本单元格中使用 shell 模式语法:

;python my_script.py

答案 1 :(得分:8)

另一种选择是使用Beaker。他们有tutorial notebook可用混合R和Python;使用Julia同样容易。

答案 2 :(得分:8)

如果您想运行整个笔记本仅 julia(或者您只从julia调用其他语言),那么有一个更清洁的解决方案。首先,启动julia并执行

Pkg.add("IJulia")

获取IJulia包。那你可以

ipython notebook --profile julia

并且您的笔记本将julia作为本机(默认)语言。

h / t给David Sanders和他的excellent julia tutorials用IPython笔记本写的; video here

答案 3 :(得分:2)

要完成this good answer,没有任何破解,并且没有修改任何系统文件,一个简单的解决方案就是使用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

答案 4 :(得分:0)

本笔记本中描述了一个干净漂亮的方法:https://github.com/binder-examples/julia-python/blob/master/python-and-julia.ipynb

它强烈使用IPython魔术(在Python中内联%julia <julia code>%%julia个单元格),但结果令人印象深刻:两个Python和Julia进程可以使用相同的变量和内存。