Command-Line

在可安裝的 UnixAPI 中維護路徑

  • November 1, 2014

我正在為虛擬機開發 Unix 環境中的 API。大多數模組都是用python開發的。我對此有幾個問題。

在 API 中,我使用的是絕對路徑,例如 ‘/root/virtman/manager/’ 。考慮在任何 unix 環境中執行這個 API,我怎樣才能使這個絕對路徑對任何作業系統/機器通用。或者我是否應該假設安裝 API 的某個位置並在任何地方提供該路徑?

我閱讀了很多文章,但沒有得到清晰的圖片,因此任何提示/建議都會有所幫助。

如果路徑僅指向您呼叫的執行檔,則應考慮在安裝(/usr/bin//usr/local/bin)期間將連結放在標準位置,並讓執行檔找出它們被呼叫的位置,然後讓它們從中派生任何數據文件的路徑。

您將使用以下內容:

/usr/bin/myprog    
/opt/myprog/bin/myprog
/opt/myprog/data/picture_01.img

/usr/bin/myprog一個連結,/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 搜尋路徑中,然後您可以import yourapimodule在 python 執行檔中執行並使用它。


如果這些是可以安裝在任何地方的數據文件,請考慮擁有一個您可以閱讀的配置文件,它可以是~/.config/yourapimodule/config.ini,~/.yourapimodule/config.ini~/.yourapimodule.ini.¹ (而不是.ini您可以使用其他格式,如.json您喜歡的任何格式)。

¹無恥外掛:如果您使用 Pythonargparse處理命令行參數,請查看ruamel.appconfig我編寫的包,它為您設置配置並允許您在配置文件中指定預設值以進行命令行解析。

引用自:https://unix.stackexchange.com/questions/165389