我的目标是在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代码?
答案 0 :(得分:26)
为了在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
]
要使用%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 模式语法:
!julia my_script.jl
它并不是在你想要的上下文中运行 python代码,但是你也可以在Julia中使用Python库:
using PyCall
@pyimport math
println(math.pi)
在笔记本单元格中使用 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进程可以使用相同的变量和内存。