シェルでPythonスクリプトを使用することについて人々が知っておくべきことは何ですか?

シェルでPythonスクリプトを使用することについて人々が知っておくべきことは何ですか?

人々が一般的に知っておくべきことを知りたいです。Python(インタプリタ)Linuxシェルで使用するとき?これは私が持っているものです。ルート図:

# ls -al /usr/bin/python*; file /usr/bin/python; /usr/bin/python-wrapper --version
lrwxrwxrwx 1 root root    14 Dec 26 04:49 /usr/bin/python -> python-wrapper
lrwxrwxrwx 1 root root     9 Dec 26 04:51 /usr/bin/python2 -> python2.7
-rwxr-xr-x 1 root root  6144 Jan  8 21:22 /usr/bin/python2.7
-rwxr-xr-x 1 root root  1450 Jan  8 21:22 /usr/bin/python2.7-config
lrwxrwxrwx 1 root root     9 Dec 26 04:49 /usr/bin/python3 -> python3.3
-rwxr-xr-x 1 root root 10304 Jan 19 20:37 /usr/bin/python3.3
-rwxr-xr-x 1 root root  1753 Jan 19 20:37 /usr/bin/python3.3-config
-rwxr-xr-x 1 root root   217 Dec 26 04:49 /usr/bin/python-config
lrwxrwxrwx 1 root root    16 Jan  8 21:22 /usr/bin/python-config-2.7 -> python2.7-config
lrwxrwxrwx 1 root root    16 Jan 19 20:37 /usr/bin/python-config-3.3 -> python3.3-config
-rwxr-xr-x 1 root root 10384 Dec 26 05:24 /usr/bin/python-wrapper
/usr/bin/python: symbolic link to `python-wrapper'
Python 3.3.3

だから私の場合、通話はpythonバージョン3.3を起動しました。私が使用するほとんどのディストリビューションには複数のバージョンがインストールされています。そして、最新バージョンは以前のバージョンと互換性がなく、一部の機能は「古い」バージョンにバックポートされています。どちらのバージョンの状況も一時的だと思いますか?次に、Pythonスクリプトを実行する必要があるたびに両方のPythonバージョンを使用して確認します。

Pythonを使用してシェルでスクリプトを実行する方法について知っておくべき他のことがありますか?それでは何ですか?誰かがPythonスクリプトを書いてenv python最初の行に使用しました。どちらのバージョンとも互換性があることを意味しますか? Pythonラッパーは何に使用されますか?

答え1

PEP 394Python のインストール方法と Shebang ラインで使用する項目を指定します。#!/usr/bin/env python2Python 2スクリプトと#!/usr/bin/env python3Python 3スクリプトと一緒に使用します(#!/usr/bin/env pythonスクリプトが両方と互換性がある場合)。

実際、人々は#!/usr/bin/env python長年にわたってshebangラインを使用してきたので、それを必要とするスクリプトを見つけるとpythonPython 2スクリプトである可能性が高くなります。

Python 2とPython 3は互換性がないため、両方のバージョンは長い間共存します。彼らは偶然似ていますが、ほとんどのプログラムと互換性があるほどではない2つの異なる言語です。pythonほとんどのシステムは現在Python 2を維持していますが、Arch LinuxはPython 3に切り替えましたpython。これらの不一致により、PEP 394 は shebang で明示的なバージョンを使用することを推奨します。残念ながら、人生は単純ではないため、一部の古いシステムにはまだこの機能がない可能性がありますpython2(Debian wheezyは危機的な状況でのみこれを得ます)。

言語デザイナーの観点からは、「Python 2.xは言語の遺産であり、Python 3.xは言語の現在であり将来」ですが、まだPython 2コードがたくさんあります。サードパーティのライブラリ(さまざまなサードパーティのライブラリはPythonの利点の1つ)を使用している人の観点から、Python 2です。

についてはpython-wrapper包装紙です。Pythonの実装から選択。これは昨日の包装紙、今日の包装紙python-exec。私は彼らが何をしているのかわかりません。

答え2

短い答え:Python 3を使用してください!心から、これは素晴らしいです!すべてのディストリビューションでPython 3をデフォルトバージョンとして使用したいと思います。

プログラムのユーザーとどのライブラリが使用されているのかわからない場合は、Python 2を使用する必要があるのか​​、Python 3を使用する必要があるのか​​という質問に答えることは困難です。両方に合うようにすることをお勧めします。

次のいずれかの条件が存在する場合は、Python 2を使用してください。

  1. まだ移植されていないライブラリを使用しています。 Python 2を必要とするライブラリはもうありません。
  2. 配布先または顧客はまだPython 2に閉じ込められています。

より詳細な回答については、以下を参照してください。Python Wikiそしてこの問題に関するウェブページ

VirtualenvsはプロジェクトとPythonのインストールを分離するのに非常に人気#!/usr/bin/env pythonがあるため、virtualenvsを動作させるために代わりにsimpleを$PATH使用しました。 Pythonのオンラインドキュメントは以下でのみ利用可能です。#!/usr/bin/env python#!/usr/bin/python場所この呼び出しを正しく使用してください。プロジェクトにPython 2インタプリタを含むvirtualenvが必要なようです。この#!/usr/bin/env問題が議論された。ここそしてここ

答え3

誰かが#!/usr/bin/env python最初の行に使用すると、スクリプトを実行するインタプリタが で見つかった最初のインタプリタであり、$PATHスクリプトが両方のバージョンと互換性があるとは見なされません。

スクリプトで使用されるPythonのバージョンを指定するには、次のようにします。

#!/usr/bin/env python2.7

または

#!/usr/bin/env python3.3

関連情報