Python3でverが変わると仕様が変わる


作成のきっかけ、現在UbuntuStudio 18.04 LTSをメインで使用していて、20.04 LTSにバージョンアップしてよいか確認するために前に使用していた古いPCに20.04 LTSをインストールしました。

すると、18.04のpythonで作成したスクリプトが20.04で動作しないしないものがある。
また、20.04のpythonで作成したスクリプトが18.04で動作しないしないものもありました。
すぐに控えておかないとすぐに忘れてしまいそうです。すでに1〜2つの例はlib名は覚えているのですがどの関数だったか忘れてしまいました。
はっきりしたことはわかりませんが、バグフィックスで仕様が変更になっているような気がします。何処かに書いてあるのかな?

実行した環境

Ubuntu Stdio 18.04LTS - Python 3.6.9
Ubuntu Stdio 20.04LTS - Python 3.8.2

from datetime import datetime

jst_date = datetime.strptime('2020/6/28', "%Y/%m/%d") # '2020/6/28'

#Python 3.8.2で動作、Python 3.6.9ではエラー (違いは”:”が入っている - ドキュメント通り)
jst_date1 = datetime.strptime(str(jst_date) + '+09:00', "%Y-%m-%d %H:%M:%S%z") # 2020-06-28 00:00:00+09:00

#Python 3.8.2でエラー、Python 3.6.9では動作 (違いは”:”が入っていない - Python 3.6.9のバグ?)
jst_date1 = datetime.strptime(str(jst_date) + '+0900', "%Y-%m-%d %H:%M:%S%z") # 2020-06-28 00:00:00+09:00

Python 3.8.2ではfontがインストールされているのにmatplotlibの日本語テキストがトウフになって表示されない
(findfont: Font family ['IPAGothic'] not found. Falling back to DejaVu Sans.) 原因がわからない〜
これは解決しました。一度matplotlibをアンインストールしインストールし直したら日本語が表示されるようになりました。

Python 3.6.9では表示される

import matplotlib.pyplot as plt
import matplotlib as mpl

mpl.rcParams['font.family'] = 'IPAGothic'
plt.text(0.5, 0.5, '日本語', color="#FF0000", fontsize=20, alpha=0.5, rotation=-45)

plt.show()

実行した環境

Ubuntu Stdio 17.10 - Python 3.6.3
Ubuntu Stdio 18.04LTS - Python 3.6.5
この現象はPython 3.6.5にバージョンアップしてなおりました。(多分バグ)

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

m = Basemap() # <ー何も指定しないとPython 3.6.3でも動作しました。

plt.show()

(次のは老いた脳細胞がパニクってしまいました。)
ubuntuとephemのverが異なるのでPythonかライブラリ「ephem」かどちらがバグっているのかわかりませんが、"="の前後に半角スペースを入れるとエラーが出たり間違った結果が出たりします。(私の想像ではver upした「ephem」がバグっているような気がします)
(ubuntu 18.04 Python 3.6.9の方は数日後にインストールしたのに、ephemのバージョンがupされていました。)
最初はやるたびに結果が間違っていなかったり、間違っていたりパニクってしまいました。

以後動作エラー等があれば、追記していきます。