0

外部バイナリの機能をラップするモジュールを作成します。

たとえば、lsプログラムを python モジュールにラップします。my_wrapper.py

import my_wrapper
print my_wrapper.ls('some_directory/')
# list files in some_directory

そして my_wrapper.py で私は:

# my_wrapper.py

PATH_TO_LS = '/bin/ls'

def ls(path):
    proc = subprocess.Popen([PATH_TO_LS, path], ...)
    ...
    return paths

(もちろん、ラップはしませんlsが、他のバイナリもあります)

/usr/bin/バイナリは、 のような任意の場所にインストールされる/opt/か、Python スクリプトと同じ場所にインストールされる場合もあります ( ./binaries/) 。

質問:

バイナリへのパスを設定する最もクリーンな (ユーザーの観点から) 方法は何でしょうか?

  • ユーザーはスクリプトの先頭で何かを指定my_wrapper.PATH_TO_LS = ...または呼び出す必要がありますか?my_wrapper.set_binary_path(path)
  • で指定したほうがいいかもしれませんがenv、ラッパーはos.environ?でそれを見つけます。
  • ラッパーがeggとして配布されている場合、インストール中に、実行可能ファイルがシステムに既に存在することを要求できますか? (以下を参照)

卵の例:

# setup.py
setup(
    name='my_wrapper',
    requires_binaries=['the_binary'] # <--- require that the binary is already 
                                     #      installed and on visible
                                     #      on execution path
)

また

easy_install my_wrapper BINARY_PATH=/usr/local/bin/the_binary
4

1 に答える 1

0

適切なデフォルトで「構成オブジェクト」を作成します。消費者が必要に応じて値を変更できるようにします。既定で作成したものを使用して、構成オブジェクト インスタンスを関数に受け入れます。

于 2013-05-20T11:38:23.453 に答える