Unix環境でPython APIを開発するための基本的な手順

Unix環境でPython APIを開発するための基本的な手順

Unix環境で仮想マシン用のAPIを開発しています。ほとんどのモジュールはPythonで開発されています。これについていくつかの質問があります。

私のファイル拡張子はabc.py..で、それをコマンドとして使用したいと思います。たとえば、virtman dominfo [vmid]コマンド構文でなければなりません。今./virtman.py dominfo [vmid]これが起こるようにしなければなりません。#!/usr/bin/pythonPythonファイルの最初の行があります。それでは、どのようにコマンドを発行しますか?

私のエコ $PATH は '/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin0' と同じです。

多くの記事を読んでいますが、はっきりと理解していないので、どんなヒントや提案でも役に立ちます。

ベストアンサー1

誤解されたようです。これはabc.pyコマンドではありません。実行できる場合は、名前にドットがあるプログラムだけです。実行できるという意味で実行する./abc.pyので、実行ビットを設定する必要があります。もしあなたなら持つあなたがすることはpython abc.py命令ではありません。

通常、通常のPythonファイルをabc.py実行可能にするには、最初の行が次のようになっていることを確認する必要があります。

#!/usr/bin/env python

(これは/usr/bin/envプログラムがあり、pythonにあるコマンドを見つけると仮定します。/usr/local/binまた、デフォルトpython(通常は同じ特定のPythonバージョンへのリンク)を実行するとします。これがコマンドとして機能している場合でもpython2.7使用できます。python3

後でやる

chmod +x abc.py
mv abc.py abc

その後、実行できます./abc。現在のディレクトリがパスにある場合、またはabcパスのディレクトリに移動した場合は、abcどこでも実行できる必要があります。

しかし、ファイルの名前変更と移動には欠点もあります。

  • from abc import SomeClassファイル名が変更されたため、これを行うことはできません。
  • ファイルがリビジョン管理対象である場合は、リビジョン管理ができなくなる可能性があります。

だから私が通常することは、/usr/local/bin/abc次のような新しいファイルを作成することです。

#!/usr/bin/env python

from abc import main
main()

そして下部にabc.py

def main():
    doing the real stuff

if __name__ == '__main__':
    main()

Pythonがモジュールを検索するには、ディレクトリがabc.pyPATHに存在する必要がありますが、これは変更する必要はなく、すべてのプログラムでインポートとして使用できますpython abc.py

1命令名からドット(.)を削除する必要がありますが、必ずしも必要ではありません。名前を変更せずに呼び出すことができますmv./abc.py

おすすめ記事