Python中的Automake数据目录和前缀
假设我有一个文件叫做 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
)