pandas1.0以上の環境でjapandasを使うとエラーが起こるようです。
この問題への解決方法の実装がjapandasのgithubにPRされています。
しかしこのPRは2020/6/23に出されていますが、どうやら放置されているようです。
今回はこのPRのコードでlib/python3.8/site-packages/japandasを置き換えたらうまくimportできました。
手順をメモしておきます。
バージョン・環境
python 3.8.5
pandas 1.2.0
matplotlib 3.3.3
mplfinance 0.12.7a4
WSL2
venvで環境構築
壊れても大丈夫なpython仮想環境で作業することをおすすめします。
エラー内容
japandas を import すると以下のようなエラーが出ます。
----> 1 import japandas
~/env38/lib/python3.8/site-packages/japandas/__init__.py in <module>
2 # coding: utf-8
3
----> 4 import japandas.core.strings # noqa
5 import japandas.io.data # noqa
6 from japandas.io.data import DataReader # noqa
~/env38/lib/python3.8/site-packages/japandas/core/strings.py in <module>
6 from unicodedata import normalize
7
----> 8 from pandas.compat import PY3, iteritems, u_safe
9 import pandas.core.strings as strings
10
ImportError: cannot import name 'PY3' from 'pandas.compat' (/home/myname/env38/lib/python3.8/site-packages/pandas/compat/__init__.py)
https://github.com/sinhrks/japandas/pull/63
(変更内容https://github.com/sinhrks/japandas/pull/63/files)
のPRがこの問題を解決するみたいです。
詳しい原理はわからなかったのですが、pandasの仕様が変わったせいかと思っています。
wrapperのつらいところだと思いました。
作業内容
適当な場所にPRコードをcloneする。
(2020/1/5にcloneしました。)
cd ~/work
git clone -b si https://github.com/simaki/japandas.git
site-packageのjapandasを消す。
(自分の場合は/home/myname下にvenvで環境を作りました。各自の環境で読み替えてください)
rm -rf /home/myname/env38/lib/python3.8/site-packages/japandas
コピーしてくる。
cp -r ~/work/japandas/japandas/ /home/myname/env38/lib/python3.8/site-packages
変更が更新されているか確認する。
#!/usr/bin/env python
# coding: utf-8
from __future__ import unicode_literals
from unicodedata import normalize
import pandas.core.strings as strings
となり、from pandas.compat import PY3, iteritems, u_safe
がなくなっていますね。
ここで import japandas
をしたらエラーが出たので、matplotlib
とmplfinance
をインストール。
ここまでやったら、import japandas できました。
In [9]: import japandas
もっと賢い方法があったら教えて下さい
最初ローカルにインストールして、そのjapandasをsite-packageより優先して参照するみたいなやり方ができないか考えていましたがうまくできませんでした。
あまりlibをいじりたくないので。
この方法でもその他の方法でも良い方法があればぜひ教えて下さい。
お読みいただきありがとうございました。