0

私はpy2app を使用しており、アプリをビルドする前に Python スクリプトを Python 3 互換に変換するためsetup.pyに実行したいと考えています。2to3オプションを使用しましsetup(use_2to3=True)たが、呼び出されませんでした2to3Makefileそのため、この問題を回避するために a を使用しています。Pythonic ソリューションはありますか? setup.py は以下です。助けてください。

import sys
from setuptools import setup
from plistlib import Plist
plist = Plist.fromFile('Info.plist')
OPTIONS = {
    'iconfile': 'python.icns',
    'plist': plist
}
if sys.version_info.major < 3:
    app = "PyInterpreter.py"
else:
    app = "build/PyInterpreter.py"

setup(
    name="PyInterpreter",
    app=[app],
    data_files=["English.lproj"],
    options={'py2app': OPTIONS},
    setup_requires=["py2app"],
    use_2to3=True,
)

ありがとう。

4

1 に答える 1

0

py2app は use_2to3 をサポートしておらず、誰かがパッチを提供しない限りサポートしない可能性があります (私は py2app のメンテナーです)。

2to3 を使用する最もクリーンな解決策は、自分で呼び出すことです。たとえば、py2app.build_app.py2app をサブクラス化するカスタム distutils コマンドで使用します (2to3 を呼び出す run メソッドを実装し、ビルド環境を調整してから、py2app.run メソッドを呼び出します)。

多くの場合、2to3 を使用しない方がはるかに優れていますが、コードを python 3 と python 2 の両方で実行されるものに変換します。これは、python 2.5 のサポートを削除できる場合はかなり簡単です (2.7 以降のみをサポートする必要がある場合はなおさらです)。 )、Python 3 の構文のほとんどは 2.6 でサポートされているためです。

ところで。plistlib.Plist.fromFile は非推奨です。代わりに plistlib.readPlist を使用してください。

于 2013-06-18T10:46:56.610 に答える