autotools 和 python setup.py

7 投票
1 回答
1264 浏览
提问于 2025-04-17 06:19

我有一个项目,主要是用C++写的,但里面有一些用Python写的辅助脚本。目前,这些脚本里有一些变量是通过autotools来替换的:

#!@PYTHON@
# -*- coding: utf-8 -*-
...

try:
    datapath = os.environ['DATA_PATH']
except KeyError:
    datapath = '@pkgdatadir@'

这里是Makefile.am的一部分:

BUILT_SOURCES = script.py
nodist_python_PYTHON = script.py 
CLEANFILES = $(python_PYTHON)
EXTRA_DIST = script.py.in 

do_subst = sed -e 's,[@]PYTHON[@],$(PYTHON),g'\
           -e 's,[@]pkgdatadir[@],$(pkgdatadir),g'

script.py: script.py.in
    $(do_subst) < $< > $@
chmod +x $@

这些脚本还依赖了一些模块,可能用一个setup.py脚本来处理会更好。

那么,最好的办法是如何将autotools和Python的distutils工具结合起来呢?我应该完全依赖autotools吗?如果不这样的话,我该如何在Makefile.am中整合setup.py的执行呢?

1 个回答

1

我会用autoconf来设置script.py,而不是你展示的'make'。可以这样做:

AC_CONFIG_FILES([script.py], [chmod +x script.py])

在configure.ac文件中的AC_OUTPUT之前加上这个就可以了。

撰写回答