Python 2 と 3 の両方をサポートする必要がある setup.py があります。
コードは現在動作しており、Python 2.x にインストール可能です。
use_2to3 = True
この句を setup.pyに追加すると、モジュールを Python 3 にインストールできますが、次のようにします。
python setup.py test
テストの 1 つが StringIO クラスを使用し、インポート行が Python 3 で失敗するため、失敗が発生します (現在from StringIO import StringIO
、Python3 ではあるべきところが です)。from io import StringIO
use_2to3 キーワードを追加すると、すべてのテスト (単体テストを含む) がテストされる前に 2to3 によって処理されると思いました。
私は何が欠けていますか?それが役立つ場合、setup.py の大部分は次のようになります。
from setuptools import setup
setup(
name='myproject',
version='1.0',
description='My Cool project',
classifiers = [
'Programming Language :: Python',
'Programming Language :: Python :: 3',
],
py_modules=['mymodule'],
test_suite='test_mymodule',
zip_safe=False,
use_2to3 = True,
)
編集:2to3が実行されていないように感じる理由python setup.py test
は、それが爆発し、スタックトレースの下部に次のように表示されるためです。
File "/home/aparkin/temp/mymodule/test_mymodule.py", line 18, in <module>
from StringIO import StringIO
しかし、test_mymodule.py で 2to3 を実行した場合、そのインポート行は次のように書き直されているはずです。
from io import StringIO
そして (最悪の場合) テストは個別に失敗するはずです。