Python中的Automake数据目录和前缀

2 投票
2 回答
1061 浏览
提问于 2025-04-17 08:57

假设我有一个文件叫做 my_application.py.in,是用来让 automake 生成 my_application.py 的。我想在我的应用程序中获取数据目录,并且希望 ${prefix} 能被正确替换成实际的路径。目前我能想到的最好办法是在我的 Python 应用中使用 replace(),但我觉得应该还有更合适的方法。

if __name__ == "__main__":
    app = Application()
    app.VERSION = '@VERSION@'
    app.PACKAGE = '@PACKAGE@'
    # How should I get the DATA_DIR in this next line?
    app.DATA_DIR = "@datarootdir@".replace("${prefix}", "@prefix@")
    app.run()

2 个回答

0

一个常见的技巧是使用adl_RECURSIVE_EVAL(来自autoconf库)在configure.ac文件中生成一个完全展开的路径。

3

你需要在 make 的时候进行替换。在C语言中,这个过程比较简单,因为你可以使用 #define 来设置常量。但在Python中,我建议你可以尝试下面的方法:

foo.py: foo.py.in
        [ -f $@ ] && rm -f $@
        $(SED) -e "s:[@]datarootdir@:$(datarootdir):" $< > $@
        chmod a-w $@

(在 configure.ac 文件中添加 AC_PROG_SED

撰写回答