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]
target=/home/work/workspace1

 

安装 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

posted @ 2020-10-14 14:59  JustDotNet  阅读(1010)  评论(0编辑  收藏  举报