2015年12月13日

PyCallで利用するPythonのパスを変えたい

PyCallでnumpyを呼ぼうとしたら、No module named numpyと言われてしまった。

using PyCall
@pyimport numpy

  #=> ERROR: PyError (:PyImport_ImportModule) 
  #=> ImportError('No module named numpy',)

原因はうちの環境ではpythonとpython3コマンドが同居しているのだけど、python3側にしかnumpy等が入っていないせい。

PyCallのドキュメントによると、ENV["PYTHON"]でパスを指定した後にPkg.buildを実行すれば、参照するPythonを書き換えられるらしい。

ENV["PYTHON"] = "/usr/bin/python3"
Pkg.build("PyCall")

これで再度@pyimportでnumpyをインストールしたらうまくいった。

ちなみに下記のissueを見ると、複数のPythonがインストールされている環境では良くないことが起こることもあるようだ。

https://github.com/stevengj/PyCall.jl/issues/65