pip安装到指定目录的方案对比
在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