CygWin配置脚本发现错误的Python版本

问题描述

我正在尝试使用CygWin的最新版本在Windows 10上编译库(libWally)。 (Automake 11-1,Autoconf 13-1)。运行命令./configure给我下面的错误。我的Python版本是3.8.5,远高于脚本要求的最低2.1.0。不知道configure是否找到了错误的版本或是否有其他错误,并且不了解如何读取configure.log文件来确定正在发生什么。

This version of the AC_PYTHON_DEVEL macro
doesn't work properly with versions of Python before
2.1.0. You may need to re-run configure,setting the
variables PYTHON_CPPFLAGS,PYTHON_LIBS,PYTHON_SITE_PKG,PYTHON_EXTRA_LIBS and PYTHON_EXTRA_LDFLAGS by hand.
Moreover,to disable this check,set PYTHON_NOVERSIONCHECK
to something else than an empty string.

编辑:在bash中,我将环境变量PYTHON_VERSION设置为“ 3.8.5”,然后重新运行。版本检查错误消失,但是然后告诉我它在系统路径中找不到“ python3.8.5”。由于我机器上的Python安装在“ ./python38”目录中,因此我将变量更改为“ 38”,但它仍然告诉我在系统路径中找不到python38。但是,它在那里。配置文件的相关部分似乎是这样的:

set dummy python$PYTHON_VERSION; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if ${ac_cv_path_PYTHON+:} false; then :
  $as_echo_n "(cached) " >&6
else
  case $PYTHON in
  [\\/]* | ?:[\\/]*)
  ac_cv_path_PYTHON="$PYTHON" # Let the user override the test with a path.
  ;;
  *)
  as_save_IFS=$IFS; IFS=$PATH_SEParaTOR
for as_dir in $PATH
do
  IFS=$as_save_IFS
  test -z "$as_dir" && as_dir=.
    for ac_exec_ext in '' $ac_executable_extensions; do
  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
    ac_cv_path_PYTHON="$as_dir/$ac_word$ac_exec_ext"
    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
    break 2
  fi
done
  done
IFS=$as_save_IFS

  ;;
esac
fi
PYTHON=$ac_cv_path_PYTHON
if test -n "$PYTHON"; then
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PYTHON" >&5
$as_echo "$PYTHON" >&6; }
else
  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi


    if test -z "$PYTHON"; then
       as_fn_error $? "Cannot find python$PYTHON_VERSION in your system path" "$LINENO" 5
再次编辑:将bash中的PYTHON var设置为Python的路径解决了路径错误,但导致原始版本错误再次出现。我包括该配置部分:
    if test -n ">= '2.7.0'"; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a version of Python >= '2.7.0'" >&5
$as_echo_n "checking for a version of Python >= '2.7.0'... " >&6; }
        ac_supports_python_ver=`$PYTHON -c "import sys; \
            ver = sys.version.split ()[0]; \
            print (ver >= '2.7.0')"`
        if test "$ac_supports_python_ver" = "True"; then
           { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
        else
            { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
            as_fn_error $? "this package requires Python >= '2.7.0'.
If you have it installed,but it isn't the default Python
interpreter in your system path,please pass the PYTHON_VERSION
variable to configure. '''

解决方法

当您说“重新出现”时,我不知道您的意思,因为您在评论中提到的消息似乎与您的问题中以前的任何错误消息都不匹配。确实,最好是在错误中准确地从终端中剪切并粘贴错误,而不是在注释中措辞。

无论如何,test -n ">= 2.7.0"是无关紧要的。总是如此,因此它将始终尝试运行$PYTHON命令。问题是为什么失败了。

如果在shell提示符下运行此命令,它将显示以下内容:

$PYTHON -c "import sys; ver = sys.version.split()[0]; print (ver >= '2.7.0')"

?如果它打印True,那么我怀疑@matzeri提供的信息就是问题所在:因为它是Windows工具,所以输出以CRLF结尾,而POSIX工具期望行尾只是LF。这意味着生成的值实际上是True<CR>,不等于True,因此对$ac_supports_python_ver的比较失败。

,

感谢所有帮助! MadSci,您的脚本行的确显示为true,因此我认为使用Windows版本的Python会出现问题。我将安装Cygwin版本的Python,然后从那里继续。