2

私はpythonプログラムを配布していますが、リンク/usr/bin/pythonがpython3にリンクされている環境では、シバン行を編集するか、明示的にpython2でスクリプトを呼び出す必要があるという苦情を受けています。シバン行に python2 を書くことはできましたが、互換性がないのではないかと心配しています。

python2 はすべての (または少なくともすべての Linux) 環境に存在しますか?

私は autotools を使用しているので、autotools の魔法のヒントにも感謝しています。

4

2 に答える 2

3

/usr/bin/env完璧で粒状の Python 検出器ではないことがわかりました。ただし、メジャー バージョン 2に制限できることわかりました。AM_PATH_PYTHON

変数「_AM_PYTHON_INTERPRETER_LIST」の aclocal.m4 ファイルを調べます。私の 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)
于 2013-10-04T04:04:46.053 に答える