昨天偶然看见了Julia 的一篇介绍,介绍中有一段话使我开始对Julia 感兴趣起来

一群拥有各种语言丰富编程经验的Matlab高级用户,对现有的科学计算编程工具感到不满——这些软件对自己专长的领域表现得非常棒,但在其它领域却非常糟糕。他们想要的是一个开源的软件,它要像C语言一般快速而有拥有如同Ruby的动态性;要具有Lisp般真正的同像性而又有Matlab般熟悉的数学记号;要像Python般通用、像R般在统计分析上得心应手、像Perl般自然地处理字符串、像Matlab般具有强大的线性代数运算能力、像shell般胶水语言的能力,易于学习而又不让真正的黑客感到无聊;还有,它应该是交互式的,同时又是编译型的……

2018-11-10 更新: 增加Julia 安装PyCall而不自动装Miniconda. bilibili 有个讲julia 的视频讲得挺好的,可惜没出第二期.

Julia 的快速、通用、还有强大的线性代数运算能力,以及熟悉的数学符号 吸引了我. (其实我以前只接触过 Matlab, Python, 还有C++, 每个还都只是半吊子

因此我马上就去下载了Julia 的安装软件(最新的1.0.0稳定版),安装完毕之后当然是要让我最常用的Jupyter 支持Julia了.于是谷歌之,还发现了Jupyter名字的来源: Julia, Python, R

While Jupyter’s roots are in Python (it evolved from IPython Notebooks), it is now multi-lingual. The name itself comes from three languages: Ju(lia) + Py(thon) + (e)R.

然后找到了IJulia, 根据说明文档来一步步安装Ijulia. 由于我已经安装了Anaconda, 自然是不想再多装一个jupyter.因此我的步骤是:

  1. 打开 anaconda prompt, 输入 where jupyter 查询下我的jupyter 安装在哪了,得到C:\ProgramData\Anaconda3\Scripts\jupyter.exe
  2. 复制得到的路径,先粘贴到记事本备用,将\改为\\,得到``C:\ProgramData\Anaconda3\Scripts\jupyter.exe`(我用的是notepad++
  3. 打开 Julia,输入以下代码
1
2
3
4
5
6
7
8
import Pkg #Julia 下的包管理器,类似于python的pip
ENV["JUPYTER"]="C:\\ProgramData\\Anaconda3\\Scripts\\jupyter"
# 刚刚得到的jupyter 路径,注意是\\,注意没有.exe
# 如果你将jupyter 加入到了系统路径,那么输入 ENV["JUPYTER"]="jupyter" 也可以
Pkg.add("IJulia")
Pkg.build("IJulia")
using IJulia
notebook()

我按照上面的步骤弄好之后,进入到了jupyter 界面,新建一个Julia文档, 然后输入一个简单的计算1+1 结果一直没有反馈。当然,用jupyter lab 也不行,即使是kernel idle 状态也不能。

jupyter notebook

本着不服输的精神,我又开始疯狂搜索相关的提问,终于在Ijulia 的 issue里面找到了解决方案,原链接在这里

具体的做法是:

1
2
3
4
5
julia> import Pkg
(v1.0) pkg> add IJulia
julia> ENV["IJULIA_DEBUG"] = true
(v1.0) pkg> dev IJulia
(v1.0) pkg> build IJulia

其中,在julia 的console 里面按]即可切换到 (v1.0) pkg>,再按backspace 键即可切换回 julia>

最后输入

1
2
using IJulia
notebook()

即可, 此后就可以通过powershell 直接输入 jupyter lab 打开jupyterlab 了, 并且可以正常使用julia 的功能。

julia in jupyterlab

Julia 还可以调用Python, 这可以通过PyCall 库来实现,如果直接

1
2
3
using Pkg
Pkg.add("PyCall")
Pkg.build("PyCall")

会安装一个MiniConda, 但是我已经有Anaconda 了,不需要miniconda

因此只需要事先指定python的路径就好了,查询python 路径得方法和查询jupyter 得方法是一样的.

1
2
3
4
ENV["PYTHON"]="C:\\ProgramData\\Anaconda3\\python"
using Pkg
Pkg.add("PyCall")
Pkg.build("PyCall")

这样就不会安装miniconda了.

最后,希望我能 学好Julia 坚持学得久一点