6. Six: Python 2 and 3 Compatibility Library

Sixは、その名前 six (\(= 2 \times 3\)) が示しているように、 python2とpython3の両方で動作するプログラムの開発を サポートしてくれるモジュールです。 python2/pytho3互換とする為のマクロやユーティリティ関数を提供してくれます。

sixは数多くの3rdパーティモジュール(例えばmatplotlib)で採用されていますが、 それ自体も3rdパーティモジュールの扱いになっています。したがって、貴方のプログラム をsixモジュールを使って、python2/python3互換とした場合、貴方のプログラムを 配布する際には、そのユーザにはsixモジュールを別途インストールする様に注意するか、 .eggなどの方法で貴方のプログラムと同時にsixモジュールがインストールされる様に設定 しておく必要があります。

six.pyのライセンスはMITライセンスとなっていますので、ライセンスの要求する著作権表示の要件などを 満たせば、配布パッケージの中にソースコードを含ませることもできるので、大きな問題ではありませんが。

と言うことで、pythonCA, pyVXI11では sixモジュールは使わないようにしています。

6.1. おまけ

https://docs.python.org/ja/3/howto/pyporting.html

には、互換性を保ちながら、pytho2からpython3への移植を行う際の 手順が説明されています。此の中では、futurizeModernizeと言ったツールが 紹介されています。