我有一个代码库,其中包含一些C ++代码和Python脚本,它们利用生成的二进制文件(通过subprocess模块)。
root/
experiments/
script_1.py (needs to call binary_1)
clis/
binary_1.cc
binary_1
从Python脚本引用二进制文件的最佳方法是什么?
$PATH
变量,或将二进制文件复制到/usr/local/bin
或其他内容答案 0 :(得分:1)
如果你的二进制文件是预编译的,你可以使用data_files参数来设置工具。将它安装在/ usr / local / bin中。
data_files=[("/usr/local/bin", glob("bin/*"))], ...
答案 1 :(得分:1)
您可以使用__file__
找出Python脚本的位置,因此用户从何处运行脚本无关紧要。
path = os.path.normpath(os.path.join(
os.path.dirname(__file__), '..', 'clis', 'binary_1'
))
答案 2 :(得分:-1)
根据我的经验,在Python程序中集成C(pp)代码的最佳方法是make a compiled Python module out of the C(pp) code,而不是像现在这样使用子进程模块。
除了更加一致和可读的Python代码库之外,您还可以获得模块化(解决$ PATH问题)的额外好处,并且可以use distutils as build tool。然后,分发也更容易,因为setup.py会自动化它。