在k8s集群中,為了更好的文件管理,所以並不是所有目錄都是支持持久化的. 而pip默認的安裝目錄是不能持久化的.
這樣就出現了一個問題:經常需要pip安裝一些包,希望這些包是持久化的.
我們能不能以一種簡單便捷的方式,支持將pip包安裝到持久化目錄,以實現pip安裝持久化的目的?
調研了一些方案,各有優劣.方案的對比結論
|
編號
|
方案
|
優點
|
缺點
|
|---|---|---|---|
| 1 | pip install transforms3d --target=/home/work/workspace/ 或者 pip install transforms3d -t /home/work/workspace/ |
pip命令支持,直觀 | 1, 每次安裝都需要指定目錄,容易出錯 2, 不支持pip uninstall transforms3d和pip show transforms3d.卸載時,需要手動刪除文件 3, 需要用戶額外輸入 |
| 2 | 優化方案1,使用環境變量 export PIP_TARGET=/home/work/workspace/ pip install transforms3d |
用戶無感知 | 1, 不支持pip uninstall transforms3d和pip show transforms3d.卸載時,需要手動刪除文件 |
| 3 | 修改Python的base目錄 export PYTHONUSERBASE=/home/work/workspace/ pip install transforms3d --user pip uninstall transforms3d |
可以統一管理安裝目錄 | 1, 需要用戶額外輸入 |
| 4 | pip.conf 1,vim /home/work/pip.config 輸入 [install] install-option=--install-lib=/home/work/workspace 2, export PIP_CONFIG_FILE=/home/work/pip.config 安裝 pip install transforms3d |
可以統一管理安裝目錄 | 1, 不支持pip uninstall transforms3d和pip show transforms3d.卸載時,需要手動刪除文件 2,測試階段發現,安裝一些包時,有權限問題,報錯 |
| 5 | pip.conf+ Python path 1, export PYTHONPATH=/home/work/workspace1 export PIP_CONFIG_FILE=/home/work/pip.config 2, vim /home/work/pip.config 輸入 [global]
安裝 pip install transforms3d 卸載 pip uninstall transforms3d |
用戶無感知 可以統一管理安裝目錄 |
1, 支持pip uninstall transforms3d和pip show transforms3d
|
個人認為:
方案1,適合個別包指定安裝目錄,持久化的場景;
方案2,3, 並不易用;
方案4,本以為是很合適的方案,但是可以在測試的時候,發現安裝一些包會報錯(和測試的工作場景有關,有不同的用戶).直接否決;
方案5,適合大部分包都安裝到指定目錄,持久化的場景;
參考文章
https://docs.python.org/3/install/index.html#custom-installation
https://docs.python.org/3/install/index.html#alternate-installation
https://pip.pypa.io/en/stable/user_guide/#configuration
