我编写了一个包装外部二进制功能的模块。
例如,我将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