PySide6 で作成したアプリを Pyinstaller で exe 化して実行すると、オーバーフローのエラーが発生しました。
エラーの内容は以下です。
OverflowError: Python int too large to convert to C long
該当箇所のコードは、以下のように QLineChart
を使ってグラフを作成している箇所でした。
series = QLineSeries()
# 省略...
qdt = QDateTime()
qdt.setSecsSinceEpoch(int(dt.timestamp()))
series.append(qdt.toMSecsSinceEpoch(), count)
toMSecsSinceEpoch()
はエポックタイムをミリ秒で返す関数です。
これを append
関数に渡すと、32bit の範囲を超えているとしてエラーが発生していました。
ビルド環境も実行環境も 64bit なのに、何故 32bit の long int
として扱われているのか?
調べてみたところ、以下の記事に辿り着きました。
どうやら float
でキャストすれば良さそうということで、以下のように修正したところ、正常に動作するようになりました。
series.append(float(qdt.toMSecsSinceEpoch()), count)