我可以期待python2在路径中吗?

时间:2013-07-26 09:43:25

标签: python environment autotools python-2.x

我正在分发一个python程序并且抱怨在链接/usr/bin/python选择python3的人必须编辑shebang行或用python2明确调用脚本的环境中。我可以在shebang行编写python2,但我担心不兼容。

python2是否存在于每个(或至少每个Linux)环境中?

我正在使用autotools,所以我也很欣赏autotools魔法tipps。

2 个答案:

答案 0 :(得分:3)

我发现/usr/bin/env不是一个完美的,精细的Python检测器。但是,我发现 可以将AM_PATH_PYTHON限制为主要版本2.

在aclocal.m4文件中查找变量“_AM_PYTHON_INTERPRETER_LIST”。在我的Mac环境中,Python二进制文件列表如下所示:

  m4_define_default([_AM_PYTHON_INTERPRETER_LIST],
[python python2 python3 python3.3 python3.2 python3.1 python3.0 python2.7 dnl
 python2.6 python2.5 python2.4 python2.3 python2.2 python2.1 python2.0])

如果通过在AM_PATH_PYTHON之前立即发出此调用来修剪列表,则可以限制已检查的Python二进制文件。所以,这实际上限制了你到python2.6 +:

m4_define_default([_AM_PYTHON_INTERPRETER_LIST],[python2 python2.7 python2.6])
AM_PATH_PYTHON(2.6)

答案 1 :(得分:1)

几乎每个Linux发行版都有Python2二进制文件。但是,它不必被命名为" python"并在/ usr / bin / python中 - 例如。在Arch Linux / usr / bin / python上指向python3.3。获取此二进制文件最安全的方法是/usr/bin/env python2,因为env二进制文件几乎总是在这里。只需键入可执行文件的第一行:

#!/usr/bin/env python2
"""rest of yours python code here..."