3

を使用して依存関係を維持しようとしていpip install -r requirements.txtます。ただし、必要なパッケージの一部は Python 3 を直接サポートしていませんが、 を使用して手動で変換できます2to3

実行時にそれらのパッケージを自動的に強制的pipに実行する方法はありますか?2to3pip install -r requirements.txt

4

1 に答える 1

6

いいえ、代わりにパッケージセットアップ構成の一部である必要があります。DistributeによるPython2と3の両方のサポートを参照してください。

パッケージインストーラーにメタデータを追加します。

setup(
    name='your.module',
    version = '1.0',
    description='This is your awesome module',
    author='You',
    author_email='your@email',
    package_dir = {'': 'src'},
    packages = ['your', 'your.module'],
    test_suite = 'your.module.tests',
    use_2to3 = True,
    convert_2to3_doctests = ['src/your/module/README.txt'],
    use_2to3_fixers = ['your.fixers'],
    use_2to3_exclude_fixers = ['lib2to3.fixes.fix_import'],
)

このようなパッケージは2to3、Python3システムへのインストール時に自動的に実行されます。

2to3はツールであり、特効薬ではありませんpip。PyPIからダウンロードした任意のパッケージに適用することはできません。パッケージは、コーディングされた方法でそれをサポートする必要があります。したがって、から自動的に実行しても機能しpipません。責任はパッケージメンテナにあります。

パッケージで正常に実行されるからといって、必ずしもパッケージがPython 3で機能するとは限らないことに注意してください2to3。通常、パッケージの使用を開始すると、バイトとユニコードに関する仮定が発生します。

興味のあるパッケージのメンテナに連絡して、Python 3のそのパッケージのステータスを尋ねてください。通常、それらにパッチを提供すると役立ちます。そのような要求や支援の申し出が耳に聞こえない場合は、オープンソースパッケージの場合、いつでもそれらをフォークして、必要な変更を自分で適用できます。

于 2013-01-24T12:38:58.950 に答える