Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pythonを3.9以降に更新する #607

Closed
3 tasks done
aoirint opened this issue Feb 2, 2023 · 5 comments · Fixed by #662
Closed
3 tasks done

Pythonを3.9以降に更新する #607

aoirint opened this issue Feb 2, 2023 · 5 comments · Fixed by #662

Comments

@aoirint
Copy link
Member

aoirint commented Feb 2, 2023

内容

#510 (comment)で言及した内容をIssue化だけしておきます。

Pythonが古くなっているので、更新したいです。

Pythonのリリースサイクルでは、18か月のバグ修正期間(Bugfix releases)、5年のセキュリティ修正期間(Source-only security fix releases)があります。(Windowsではデジタル署名された)Python公式バイナリのリリースは、バグ修正期間のみ行われます。現在のPython 3.8.10は、Python 3.8最終のバグ修正リリースです。

Python 3.8、Python 3.9はセキュリティ修正期間にあり、Python 3.10、Python 3.11はバグ修正期間(安定版)にあります。
以下は、各バージョンのバグ修正期間の終了予定月です。

所感ではPython 3.10までは更新できそうです。できればPython 3.11まで上げたいところです。

Pros 良くなる点

  • 依存するPythonバージョンがEOLになるまでの期間を伸ばせる
  • Pythonの新機能が使えるようになる
  • Pythonの改善による性能向上?

Cons 悪くなる点

実現方法

  • 依存ライブラリ・依存ツールのPythonバージョン対応状況を調査して、更新する
  • 非推奨化または削除されたPython APIへの依存を修正する
  • CI・Dockerで使用するPythonバージョンを更新する

VOICEVOXのバージョン

0.14.0

OSの種類/ディストリ/バージョン

  • Windows
  • macOS
  • Linux

その他

@github-actions github-actions bot added OS 依存:linux Linux に依存した現象 OS 依存:mac macOS に依存した現象 OS 依存:win Windows に依存した現象 labels Feb 2, 2023
@aoirint
Copy link
Member Author

aoirint commented Feb 2, 2023

mypy>=0.900への更新

現在、mypypysen[lint]の依存によってインストールされています。
まだCIが通らないため実際に使用されていませんが、今後有効化したい、という状態にあります。

現在依存関係のあるmypy<0.900typed_ast<1.5.0という古いパッケージに依存していて、
このパッケージのこのバージョンはPython 3.9以降で動作しません。
mypy>=0.900かつpython>=3.9では、typed_astへの依存が削除されているため、この問題を解消できます。

一方、pysen[lint]では、mypy<0.800が指定されています。pysenのドキュメントでは、mypy>=0.800を使う場合、linterを個別にインストールするように指示があるため、mypyを更新するためには、pysen[lint]を個別のパッケージへの依存に分解する必要があります。

@aoirint
Copy link
Member Author

aoirint commented Feb 2, 2023

pyopenjtalk 0.3.0への追従

https://github.com/VOICEVOX/pyopenjtalkは、現在r9y9/pyopenjtalk 0.2.0ベースになっていますが、Python 3.10以降では、numpy 1.22.0に対応した0.3.0ベースに更新する必要があります。

@aoirint
Copy link
Member Author

aoirint commented Feb 2, 2023

Optional: distutilsパッケージからの脱却

現在、バージョン文字列のパースにdistutilsを使っていますが、この標準パッケージは非推奨化され、Python 3.12で削除されます。
実行時に標準エラー出力に移行先のパッケージ(packaging.version)が出力されるので、それに移行すればよさそうです。

latest_core_version = str(max([LooseVersion(ver) for ver in synthesis_engines]))

@aoirint
Copy link
Member Author

aoirint commented Feb 2, 2023

手元で試して分かったことを参考用に書いておきました。

@Hiroshiba
Copy link
Member

issue作成ありがとうございます!!
たしかpythonは3.11くらいで高速化がされてるので、そこまで上げちゃいたいほどのモチベがあります!!
調査記録もとても助かります、ぜひ進めていきたいです 🙏

@tarepan tarepan removed OS 依存:mac macOS に依存した現象 OS 依存:linux Linux に依存した現象 OS 依存:win Windows に依存した現象 labels Mar 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants