LoginSignup
0
0

More than 3 years have passed since last update.

pandas1.0以上でのjapandasのimport

Last updated at Posted at 2021-01-05

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

変更が更新されているか確認する。

/home/myname/env38/lib/python3.8/site-packages/japandas/core/strings.py

#!/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 をしたらエラーが出たので、matplotlibmplfinanceをインストール。

ここまでやったら、import japandas できました。

In [9]: import japandas

もっと賢い方法があったら教えて下さい

最初ローカルにインストールして、そのjapandasをsite-packageより優先して参照するみたいなやり方ができないか考えていましたがうまくできませんでした。
あまりlibをいじりたくないので。

この方法でもその他の方法でも良い方法があればぜひ教えて下さい。
お読みいただきありがとうございました。

0
0
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
0
0