タスク: Python3への移行

Issue #650 resolved
k4nagatsuki repo owner created an issue

Pythonはバージョン3以降大幅に仕様が整理され、2以前との互換性が無くなりました。現在はPython 2系とPython 3系が並行してメンテナンスされていますが、2系のサポートは2020年までとされています。

CardWirthPyも、それまでにPython 3系へ移行しなくてはなりません。必要なライブラリは、全てPython 3でも動作するか、動作するものがある事を確認済みです(py2exeはpipにあるものが3系用です)。

あとはCWPy本体のコードを書き換えるのみですが、これは並大抵の作業にはならない事が予想されます。他の作業との兼ね合いを考えると、軽々と開始はできません。

Python 2から3への移行は大きなテーマなので、実際の作業に際して参考になる記事は、検索すれば大量に見つかります。

たとえば:

こうした記事を参考に作業を進めていく事になるかと思います。

Comments (8)

  1. k4nagatsuki reporter
    • changed status to open

    https://bitbucket.org/k4nagatsuki/cardwirthpy-reboot-with-python3

    上記リポジトリで作業を行っています。

    Python 3.6.4への移植では、実行環境側の問題が2点あります。

    • Python 3.6からWindowsでのエンコーディングの扱いが変化し、その煽りでpipによるlhafileのインストールに失敗します。pipの当該Issue
    • py2exeはPython 3.4までしか対応できていないようです。

    当面は3.4系をターゲットにするのがいいかもしれません。

  2. k4nagatsuki reporter

    Python 3.4.4で試してみたのですが、pygameのインストールで失敗してしまいます。

    たぶん今は3系向けのコードを維持しつつpy2exeの更新を待つのが最も楽な道かと思われます。

  3. k4nagatsuki reporter

    py2exeの競合をいくつか試してみました。

    • Nuitka …… バイナリはできるものの起動が非常に遅い、大きくなる、--standaloneがないと他の環境に持ち出した時に動かない? しかし--standaloneをつけると1つのファイルにまとまらない。
    • PyInstaller …… --onefileでうまく1ファイルのバイナリができる。ファイルサイズもpy2exe以下。しかしファイルの展開が入るためか、いくつかの環境で試した限りではおおむね起動が遅い。1ファイルにまとめない場合は大量のファイルをぶちまけるはめになる。
    • cx_Freeze …… 大量のファイルができるがCardWirthPy.exepython36.dll以外はlibフォルダに追い出す事ができる。展開が無いので起動が速い。

    現時点ではcx_Freezeが最善の選択肢と思われます。lib以下を気にしなければpy2exeよりいいかもしれません。

  4. k4nagatsuki reporter

    マージしてwikiの開発者向け情報を更新しました。

    対応作業の結果、副次的に64-bitビルドが作れるようになりました。テスト版も32-bit版と64-bit版の両方をアップロードしています。リリースも両方出す事になるかと思います。

  5. Iraka.T

    bit差分が配布されるようになっていたので、cwpy-installerを更新しました。

    更新しなくても、設定ファイル内の正規表現パターンを手動で修正すれば、ダウンロードできるようにはなります。

  6. Log in to comment