自动工具(AX_PYTHON_DEVEL 和 AM_PATH_PYTHON)
Autotools (AX_PYTHON_DEVEL and AM_PATH_PYTHON)
我想在 3.4 以上找到 python,其中有 python-devel。
我在 configure.ac:
中想出了这段代码
AM_PATH_PYTHON([3.4],
[AX_PYTHON_DEVEL([>= '3.4'])],
[AC_MSG_FAILURE([Cannot find python.])]
)]
但这并没有捕捉到这种糟糕的情况:
机器有 python3.4、python3.6 和 python3.6-devel
在这种情况下,AM_PATH_PYTHON 会找到 python 3.4 而 AX_PYTHON_DEVEL 会失败。
所以,我的问题是:满足此类要求的最佳方法是什么?
在伪代码中,逻辑应该是这样的:
for ver in python_version_list; do
AM_PATH_PYTHON($ver, AX_PYTHON_DEVEL($ver), [:]
if "x$pythonexists" != "x:"
break
done
AM_CONDITIONAL([HAVE_PYTHON], [test "x$pythonexists" = "xyes"])
谢谢
恐怕 AX_PYTHON_DEVEL
不提供为开发组件搜索多个 Python 安装 - 无论是内部还是外部。它选择一个 Python 解释器(您可以通过多种方式影响选择),然后期望能够识别并报告与该解释器关联的开发组件。如果它不能这样做,那么它将中止配置。
但我认为您可能无益地框定了问题。问题不应该是针对哪个 Python 存在开发组件,而是 Python 用户希望为哪个 Python 安装您的模块/包。可以合理地假设他们想要系统默认的 Python,如果有的话,或者肯定是用户指定的 Python。但面对多个已安装的 Python,假设他们想要它是不合理的,足够新的 Python 碰巧有可用的开发组件。
因此,我会简单地这样做:
# By default, aborts if no suitable Python is found:
AM_PATH_PYTHON([3.4])
# Will assume the Python interpreter previously identified by AM_PATH_PYTHON:
AX_PYTHON_DEVEL
在必须与多个 Python 竞争的环境中构建您的包的人需要足够的智慧来处理这种情况,在这种情况下,这意味着使用 PYTHON
环境变量,用于指定要使用的 Python(如 configure --help
将提示的那样),如果需要的话。
我想在 3.4 以上找到 python,其中有 python-devel。 我在 configure.ac:
中想出了这段代码AM_PATH_PYTHON([3.4],
[AX_PYTHON_DEVEL([>= '3.4'])],
[AC_MSG_FAILURE([Cannot find python.])]
)]
但这并没有捕捉到这种糟糕的情况: 机器有 python3.4、python3.6 和 python3.6-devel
在这种情况下,AM_PATH_PYTHON 会找到 python 3.4 而 AX_PYTHON_DEVEL 会失败。
所以,我的问题是:满足此类要求的最佳方法是什么?
在伪代码中,逻辑应该是这样的:
for ver in python_version_list; do
AM_PATH_PYTHON($ver, AX_PYTHON_DEVEL($ver), [:]
if "x$pythonexists" != "x:"
break
done
AM_CONDITIONAL([HAVE_PYTHON], [test "x$pythonexists" = "xyes"])
谢谢
恐怕 AX_PYTHON_DEVEL
不提供为开发组件搜索多个 Python 安装 - 无论是内部还是外部。它选择一个 Python 解释器(您可以通过多种方式影响选择),然后期望能够识别并报告与该解释器关联的开发组件。如果它不能这样做,那么它将中止配置。
但我认为您可能无益地框定了问题。问题不应该是针对哪个 Python 存在开发组件,而是 Python 用户希望为哪个 Python 安装您的模块/包。可以合理地假设他们想要系统默认的 Python,如果有的话,或者肯定是用户指定的 Python。但面对多个已安装的 Python,假设他们想要它是不合理的,足够新的 Python 碰巧有可用的开发组件。
因此,我会简单地这样做:
# By default, aborts if no suitable Python is found:
AM_PATH_PYTHON([3.4])
# Will assume the Python interpreter previously identified by AM_PATH_PYTHON:
AX_PYTHON_DEVEL
在必须与多个 Python 竞争的环境中构建您的包的人需要足够的智慧来处理这种情况,在这种情况下,这意味着使用 PYTHON
环境变量,用于指定要使用的 Python(如 configure --help
将提示的那样),如果需要的话。