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?
  • 如果包装器作为鸡蛋分发,我可以在安装期间要求可执行文件已经存在于系统中(见下文)吗?

鸡蛋示例:

# 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 回答