LoginSignup
1
6

More than 3 years have passed since last update.

PythonとJuliaをお気楽に併用する。

Last updated at Posted at 2019-04-30

お気楽併用法のヒントを3行で

  • anacondaを入れる
  • juliaをインストール
  • 用いるancondaのバージョンを指定して、PyCallパッケージとCondaパッケージを入れる。

anacondaのところはminicondaでも良い。
conda系が嫌いな人は、普段使いのpythonを別にしても良いけれど、パッケージをjuliaとpythonとで共有したい場合、素直にcondaにpythonのバージョン管理を任せてしまった方が良い。

私がやったこと

以下、apt updateが使えないUbuntuでの作業例。
git/curl等が入っていること、前提。

①pyenv経由で、anaconda入れる

pyenv使うことで、何かあった時にanacondaから離れることも簡単にできる。

git clone https://github.com/yyuu/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc
pyenv install -l | grep ana
pyenv install anaconda3-2019.03

②juliaをインストール

curl https://julialang-s3.julialang.org/bin/linux/x64/1.0/julia-1.1.0-linux-x86_64.tar.gz
tar zxvf julia-1.1.0-linux-x86_64.tar.gz
echo 'export PATH="$PATH:/home/kmr/julia-1.1.0/bin"' >> ~/.bashrc

③用いるancondaのバージョンを指定して、PyCallパッケージとCondaパッケージを入れる。

ここは多少戸惑う可能性が高い。
Pythonとjuliaを併用する場合、PyCallパッケージとCondaパッケージについてある程度理解しておいた方が良いので、以下など参考にしてご自身で入れてみよう(私も多少試行錯誤した)。

http://heine98.hatenablog.com/entry/2018/10/13/095003
https://qiita.com/tenfu2tea/items/d2ac1427eaed7a548287

正しくCondaが使えるようになっているかの確認

pip経由で使いたいpythonライブラリを入れてからjuliaのREPLに入る。
Conda.list()で、目的のライブラリ(私の場合janome)を確認できればOK。

julia> using Conda

julia> Conda.list()
[ Info: Running `conda list` in root environment
WARNING: The conda.compat module is deprecated and will be removed in a future release.
# packages in environment at /home/kmr/.pyenv/versions/anaconda3-2019.03:
#
# Name                    Version                   Build  Channel
_ipyw_jlab_nb_ext_conf    0.1.0                    py37_0
alabaster                 0.7.12                   py37_0
anaconda                  2019.03                  py37_0
..(以下、ずらすらとanaconda経由のパッケージが出てくる)..
janome                    0.3.8                    pypi_0    pypi
....

JuliaでJanome

janome.jl
using PyCall

jt = pyimport("janome.tokenizer")
t = jt.Tokenizer()
doc ="""Juliaでjanomeの助けを借り、形態素解析界隈のハローワールド、
すもももももももものうちをしてみんと思う。"""

for tk in t.tokenize(doc)
    println("$(tk.surface) : $(tk.part_of_speech)")
end

$ julia janome.jl
Julia : 名詞,一般,,
で : 助詞,格助詞,一般,*
janome : 名詞,一般,,
の : 助詞,連体化,,
助け : 名詞,一般,,
を : 助詞,格助詞,一般,*
借り : 動詞,自立,,
、 : 記号,読点,,
形態素 : 名詞,一般,,
解析 : 名詞,サ変接続,,
界隈 : 名詞,一般,,
の : 助詞,連体化,,
ハロー : 名詞,一般,,
ワールド : 名詞,一般,,
、 : 記号,読点,,
: 記号,空白,,
すもも : 名詞,一般,,
も : 助詞,係助詞,,
もも : 名詞,一般,,
も : 助詞,係助詞,,
もも : 名詞,一般,,
の : 助詞,連体化,,
うち : 名詞,非自立,副詞可能,*
を : 助詞,格助詞,一般,*
し : 動詞,自立,,
て : 助詞,接続助詞,,
みん : 動詞,非自立,,
と : 助詞,格助詞,引用,*
思う : 動詞,自立,,
。 : 記号,句点,,

1
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
6