カプセル化されたデザインに起因する問題があります。これまで多くのスクリプトがbashで書かれていたため、#!/bin/bash
は常にシンプルでした。#!でPythonのバージョンを特定する方法環境変数を使用する
しかし、ここではPythonでスクリプトを書き直していますが、もう少し難しいです。私たちはPythonの特定のバージョンを提供しています(クライアントのインストール環境におけるバージョンの違いを避けるため)。 pythonの特定のバージョンは、インストールされたディレクトリ構造の中に存在するので、私はそれにルーティングする必要があります。
しかし、私は#とは思わない!文はファイルを実行するシェルからの環境変数を受け入れることができます(試してみると悪いインタプリタを取得します)。
例:foo.py
で
私は、ファイルを実行すると悪い通訳を得たbashシェルでは#!$dirloc/wherepythonlives/python
を持っています。 環境変数をその#!
行に没入させる方法はありますか?
明示的なパスに依存する必要がありますか?私たちは複数のバージョンのソフトウェア(複数のPythonバージョンを意味する可能性があります)を1つの環境でサポートしたいので、Pythonの!#
ステートメントをインストールするディレクトリレベルの中に何とかしておきたいと考えていました。
#!/usr/bin/env python
これはenv
はpython
と呼ばれるバイナリのためのPATH
環境に沿って見えるようになります:
あなたもちょうど$ DIRLOC/wherepythonlives/pythonのfoo.py呼び出すのではなく、直接スクリプトを実行するshスクリプトを書くことができます。 –