Files

為什麼 pip 會在 ~/.local/bin 中安裝一個包?

  • April 27, 2019

當我用 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 程序會安裝在那裡?

簡短的回答是,這~/.local/bin是 Python 的使用者腳本目錄的預設值,pip如果它執行使用者本地安裝,它可能會將執行檔安裝到該目錄中。它還可以將文件安裝到 的其他子目錄中~/.local,這是使用者基本目錄的預設值。更多詳情如下。


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

~/.local/bin

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

~/.local/lib

與所有架構兼容的靜態私有供應商數據。

~/.local/lib/arch-id

放置公共動態庫的位置。要使用的架構標識符在 Multiarch Architecture Specifiers (Tuples) 列表中定義。

~/.local/share

多個包之間共享的資源,例如字型或藝術品。通常,儲存在此目錄下的文件的精確位置和格式取決於確保互操作性的規範。如果應用程序發現 $XDG_DATA_HOME 集,它應該使用其中指定的目錄而不是此目錄。

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

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

  • 使用者基礎目錄

~/.local

  • 使用者腳本目錄:

~/.local/bin

  • 使用者站點目錄:

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

  • 使用者數據目錄:

~/.local/lib/python2.6

由此我們可以得出結論,Python 具有所謂的“基本使用者目錄”的概念,其預設值為~/.local. 基本使用者目錄在模組的Python 文件中進行了site討論。特別是,它提供了確定使用者基本目錄和使用者站點目錄的值的方法,--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

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

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