2013-05-20 66 views
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/甚至一個t是同一個地方的python腳本(./binaries/

問:

什麼是最乾淨的(從用戶角度)的方式來設置路徑二進制?

  • 用戶是否應該在其腳本開頭指定my_wrapper.PATH_TO_LS = ...或調用my_wrapper.set_binary_path(path)
  • 也許最好是在env中指定它,並且包裝可以用os.environ找到它?
  • 如果包裝分發爲蛋,我可以在安裝過程中要求可執行文件已存在於系統中(請參閱下文)?

蛋例如:

# 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 

回答

0

創建一個 「配置對象」 與健全的默認值。允許消費者適當修改這些值。接受一個配置對象實例到你的函數中,採用默認創建的實例。

+0

在哪個級別?函數執行,例如'params = LSParameters(...); my_wrapper(PARAMS)'? –

+0

是的。但大概你會有不止一個配置選項。 –

相關問題