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

答え2

Anthonの答えは正確ですが、深刻なPythonプロジェクトの場合は見てください。ゆがむ標準ライブラリのモジュール。それデザイン済みPythonモジュールと実行可能ファイルをシステムに「正しい方法」でデプロイし、次の手順を実行します。

  • このモジュールは標準ライブラリにあり、最もよく知られているPythonパッケージ(Django、NumPy、Celeryなど)で使用されるため、Python開発者はこのモジュールに精通しているか慣れている必要があります。新規ユーザーは、プロジェクトのデプロイ方法をすぐに把握します。

  • プロジェクトのファイルとパッケージが定義されたら、単に実行して python setup.py installシステムにパッケージを展開して更新します。

    PATH変数を手動で更新したり、ファイルをコピーしたり、実行/usr/local/bin可能にしたりすることなく、すべて処理されます。

  • pip install -eを使用して開発モードでパッケージをインストールできます。

  • また、WindowsまたはOSX環境でもある程度移植可能です。

また、次のパラメータパーサーを使用することは十分にお勧めできません。引数の解析中コマンドラインツールを設計する場合はこれで十分です。

関連情報