zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    jmeter BeanShell内置变量的基本使用
    自定义 resetCSS
    JavaScript + html 制作钟表
    JavaScript 实现放大镜效果
    JavaScript 实现拖拽
    JavaScript 阻止事件的默认行为
    JavaScript 事件冒泡
    JavaScript 鼠标事件、键盘事件
    JavaScript window.location
    JavaScript 中document.getElementsByClassName() 在ie8以下不兼容问题
  • 原文地址:https://www.cnblogs.com/13579net/p/13814972.html
Copyright © 2011-2022 走看看