為什麼 pip 將套件安裝到 ~/.local/bin 中?

為什麼 pip 將套件安裝到 ~/.local/bin 中?

當我用 pip 安裝這個「Taurus Blazemeter 'bzt'」程式時,它最終被安裝到~/.local/bin 資料夾中。

mkdir ~/bzt && cd ~/bzt
sudo apt-get install python default-jre-headless python-tk python-pip python-dev libxml2-dev libxslt-dev zlib1g-dev
sudo pip install bzt

有誰知道這個~/.local資料夾的用途以及為什麼像這樣的Python程式會安裝在那裡?

答案1

簡而言之,這~/.local/bin是 Python 使用者腳本目錄的預設值,pip如果執行使用者本機安裝,則可能會將執行檔安裝到該目錄中。它還可以將檔案安裝到 的其他子目錄中~/.local,這是使用者基本目錄的預設值。更多詳細資訊如下。


我不確定這是否是最早的介紹,但~/.local目錄出現在文件系統層次結構規範系統init 系統,其中定義了以下幾個子目錄~/.local

〜/.local/bin

應出現在使用者的 $PATH 搜尋路徑中的可執行檔。建議不要將對 shell 呼叫無用的可執行檔放置在該目錄中;這些應該放在 ~/.local/lib 的子目錄中。將依賴體系結構的二進位檔案放置在此位置時應小心,如果主目錄在具有不同體系結構的多個主機之間共享,則可能會出現問題。

〜/.local/lib

與所有架構相容的靜態、私人供應商資料。

〜/.local/lib/arch-id

放置公共動態庫的位置。要使用的架構標識符在多架構架構說明符(元組)清單中定義。

〜/.local/共享

多個包之間共享的資源,例如字體或藝術品。通常,儲存在該目錄下的檔案的精確位置和格式受確保互通性的規範的約束。如果應用程式發現 $XDG_DATA_HOME 設置,則應使用其中指定的目錄而不是此目錄。

Python 對目錄的採用~/.local似乎是在 Python 2.6 中引入的,並記錄在 PEP(Python 增強提案)370 中:

此規格包括以下針對 Unix 系統(包括 Mac OS X)的定義。

  • 使用者基礎目錄

    ~/.local

  • 使用者腳本目錄:

    ~/.local/bin

  • 使用者網站目錄:

    ~/.local/lib/python2.6/site-packages

  • 使用者資料目錄:

    ~/.local/lib/python2.6

由此我們可以得出結論,Python有一個所謂的「基本使用者目錄」的概念,並且它的預設值為~/.local.基本使用者目錄在site該模組的 Python 文檔。特別是,它提供了確定使用者基本目錄和使用者網站目錄、--user-base--user-site選項標誌的值的方法。你可以像這樣使用它們:

user@host:~$ python -m site --user-base

/home/user/.local

user@host:~$ python -m site --user-site

/home/user/.local/lib/python2.7/site-packages

~/.localStackExchange 網站上發布了幾個與我用作參考的目錄相關的問題:

相關內容