3

Linux インストール オプションを含む setup.cfg があります。

[install]
prefix=/opt/foo
install-lib=/opt/foo

これは、このプロジェクトが Linux で使用するデフォルトのディレクトリ レイアウトに対応しています。

現在、同じプロジェクトで Windows インストールに py2exe を使用しています。現在、.batファイルを使用して、実行中にこのsetup.cfgを邪魔にpython setup.py py2exeならないように移動して、py2exeをこれらの設定と混同しないようにしています。これは、デフォルトパラメーターを使用したdistutils/py2exeに相当すると思います。

python setup.py py2exesetup.cfgで指定されたものをオーバーライドするために、いくつかの追加の引数を使用して呼び出したいと思いますが、使用する--prefix= --install-lib=

[...]
*** copy data files ***
Traceback (most recent call last):
  File "setup.py", line 158, in <module>
    **platformOptions)
  File "C:\Python27\lib\distutils\core.py", line 152, in setup
    dist.run_commands()
  File "C:\Python27\lib\distutils\dist.py", line 953, in run_commands
    self.run_command(cmd)
  File "C:\Python27\lib\distutils\dist.py", line 972, in run_command
    cmd_obj.run()
  File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 243, in run
    self._run()
  File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 312, in _run
    self.create_binaries(py_files, extensions, dlls)
  File "C:\Python27\lib\site-packages\py2exe\build_exe.py", line 560, in create_binaries
    install_data.ensure_finalized()
  File "C:\Python27\lib\distutils\cmd.py", line 109, in ensure_finalized
    self.finalize_options()
  File "C:\Python27\lib\distutils\command\install_data.py", line 41, in finalize_options
    ('force', 'force'),
  File "C:\Python27\lib\distutils\cmd.py", line 298, in set_undefined_options
    src_cmd_obj.ensure_finalized()
  File "C:\Python27\lib\distutils\cmd.py", line 109, in ensure_finalized
    self.finalize_options()
  File "C:\Python27\lib\distutils\command\install.py", line 353, in finalize_options
    'userbase', 'usersite')
  File "C:\Python27\lib\distutils\command\install.py", line 504, in convert_paths
    setattr(self, attr, convert_path(getattr(self, attr)))
  File "C:\Python27\lib\distutils\util.py", line 199, in convert_path
    raise ValueError, "path '%s' cannot be absolute" % pathname
ValueError: path '/opt/trelby' cannot be absolute

これは、setup.cfg パラメータをまったく上書きしようとしない場合と同じ動作であるため、何か問題が発生しているようです。

必要に応じて、代わりに setup.py でdistutils.core.setup()optionsパラメーターを設定することもできますが、主な問題は次のようです: デフォルトの py2exe 動作を実現するために、どの値にしますか?

ところで、コードはhttps://github.com/oskusalerma/trelbyにあります

4

1 に答える 1

2

エラーを再現しようとしましたが、win* にアクセスできず、おそらく新しい distutils を使用しました。

ValueError: path '/opt/trelby' cannot be absoluteこれは重要です。何らかの理由で相対パスを使用する必要がある場合は、必ず相対パスを使用してください。

通常のdistutilsではそのエラーは発生しません。

python setup.py install --prefix /some/otherconfig.cfg に install-lib が指定されている場合、何もしません。

python setup.py install --install-lib /some/otherインストールパスを変更します。

つまり、私のセットアップでの優先順位は次のとおりです。

  • install-lib コマンド行引数
  • setup.fg の install-lib
  • 接頭辞コマンド行引数
  • setup.cfg のプレフィックス

py2exe なしでテストしてください。問題が distutils に起因する場合は、おそらくそれらをアップグレードできます。または、コマンドライン引数を飲み込み、それらをdistutilsに渡さないのはpy2exeである可能性があります。おそらく、それを追跡してパッチを送信できます。

于 2012-12-22T13:12:33.650 に答える