execvで実行するときにPythonインタープリターを指定するクロスプラットフォームの方法

StackOverflow https://stackoverflow.com/questions/3988598

  •  10-10-2019
  •  | 
  •  

質問

現在、LinuxとWindows 7の両方でPythonスクリプトを実行しています。ファイルはExecVスタイルで実行されます。これは、インタープリターがコマンドのファイルの先頭で定義されていることを意味します。

Windowsシステムでは、インタープリターの仕様は次のとおりです。

#!C:\Python26\python.exe

ただし、Linuxではこれが必要です

#!/usr/bin/python

このラインを何度も変更することなく、両方のシステムでこのスクリプトを実行したいと思います。

私は次のことを試しました:

#!C:\Python26\python.exe
#!/usr/bin/python

と同様:

#!C:\Python26\python.exe;/usr/bin/python

だから:複数の通訳を指定できる方法はありますか?

役に立ちましたか?

解決

#!/usr/bin/env python

それはそれを呼び出します env Python実行可能ファイルのパスを検索するプログラム。

Pythonの特定のバージョンを確認する必要がある場合は、例えば、次のことができます。

#!/usr/bin/env python2.5

他のヒント

あなたがやろうとしていることに応じて、これは少し重いかもしれませんが、0インストールはあなたのプログラムを実行すると、プラットフォームに適したPythonインタープリターになります。プログラムのXML説明では、このようなことを行います(たとえば、python> = 2.6、<3が必要な場合):

<command name="run" path="myprog.py">
  <runner interface="http://repo.roscidus.com/python/python">
    <version not-before="2.6" before="3"/>
  </runner>
</command>

見る: http://www.0install.net/local-feeds.html

これにより、ユーザーが既に持っていない場合、0インストールのPythonをダウンロードします。

Linuxのみをターゲットにしている場合でも、これを行うことができることに注意してください。Python3には単一の#がないためです。すべてのプラットフォームで動作する行(一部のプラットフォーム、たとえば、「Python」ではなく「python2」が必要ですが、その他のdebianは「python2」を提供しない、「python」のみを提供しません)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top