Unix環境で仮想マシン用のAPIを開発しています。ほとんどのモジュールはPythonで開発されています。これについていくつかの質問があります。
APIの内部では、 '/root/virtman/manager/'などの絶対パスを使用します。すべてのUnix環境でこのAPIを実行することを考慮して、この絶対パスをすべてのOS /マシンに汎用にする方法は何ですか?それとも、APIがインストールされている特定の場所を想定し、どこにもそのパスを提供する必要がありますか?
多くの記事を読んでいますが、はっきりと理解していないので、どんなヒントや提案でも役に立ちます。
答え1
パスが呼び出されている実行可能ファイルのみを指す場合、インストール中にリンクを標準位置(/usr/bin/
または/usr/local/bin
以下を使用します。
/usr/bin/myprog
/opt/myprog/bin/myprog
/opt/myprog/data/picture_01.img
にはならないリンク/usr/bin/myprog
があります。 do経由でリンクを設定し、doに含めます。/opt/myprog/bin/myprog
/opt/myprog/bin/
$PATH
sudo ln -s /opt/myprog/bin/myprog
/usr/bin
/opt/myprog/bin/myprog
import sys
import os
base_dir = os.path.realpath(sys.argv[0]).rsplit('/bin/', 1)[0]
/opt/myprog
実行時に動的に決定
Python APIを含むいくつかのモジュールに基づいている場合は、そのモジュールがシステムPythonのPYTHONPATH検索パスにインストールされていることを確認してから、Python実行可能ファイルimport yourapimodule
でそれを実行して使用できます。
どこにでもインストールできるデータファイルの場合は、読みやすい設定ファイル(例:~/.config/yourapimodule/config.ini
。~/.yourapimodule/config.ini
~/.yourapimodule.ini
.ini
.json
1 Shamelessプラグ:Pythonを使用してargparse
コマンドライン引数を処理する場合は、このパッケージを確認してください。ruamel.appconfig
私が作成した設定を設定し、コマンドライン解析のために設定ファイルにデフォルト値を割り当てることができます。