【问题标题】:When install external python packages global, when local? pip or system package-manager?什么时候全局安装外部python包,什么时候安装本地? pip 还是系统包管理器?
【发布时间】:2017-06-19 19:27:50
【问题描述】:

我对安装外部 python 包的可能性感到困惑:

  1. 使用pip 将包本地安装到/home/chris/.local/lib/python3.4/site-packages
    $ pip install --user packagename

  2. 使用pip 将包全局安装到/usr/local/lib/python3.4/site-packages
    (需要超级用户权限)
    $ pip install packagename

  3. 使用zypper 将包全局安装到/usr/lib/python3.4/site-packages
    (需要超级用户权限)
    $ zypper install packagename

我使用 OpenSuse 和 package-manager zypper 并且可以访问用户 root。

关于pip,我(想)知道的是:
- pip 只下载最新版本。
- 如果有新版本可用,则不会检查已安装的软件包。
- 可以在虚拟环境中安装自己的包。
- 下载和安装比zypper 花费更多时间。
- 可以进行本地或全局安装。

我系统的包管理器:
- 下载和安装是否更快。
- 仅全局安装包。

我的问题是我应该何时以及为什么要进行安装:pip(本地、全局)还是使用zypper
我已经阅读了很多关于这个问题的信息,但无法清楚地回答这个问题......

【问题讨论】:

    标签: python pip global packages local


    【解决方案1】:

    /usr/lib 下的东西是系统包,被认为是操作系统的一部分。操作系统脚本和服务很可能/可能会依赖这些组件。我建议您不要自己触摸这些,或者真正使用或依赖它们作为用户脚本,因为这会使您的应用程序操作系统甚至操作系统版本依赖。如果编写在系统级别运行的脚本(例如执行维护或管理任务),请使用这些,尽管我会认真考虑使用这些...

    /usr/local/lib 下的东西安装在本地,供任何用户使用。系统脚本等不依赖于这些(虽然我自己不了解 SuSE),但其他用户的脚本可能会很好,因此在此处进行更改时需要牢记这一点。这是一个共享资源。如果您编写的脚本可能需要其他用户运行,请针对此进行开发以确保他们能够访问所有必需的依赖项。

    你的主目录中的东西都是你的,所以你可以做。如果您只是为自己编写东西,特别是如果您可能需要将脚本移植到其他盒子/操作系统,请使用此选项。

    可能还有其他有意义的选项,例如,如果您是开发应用软件的团队的一员,在这种情况下,将您团队的基础开发包安装在共享位置,但可能不是 /usr/local。

    在使用 zypper 或 pip 方面,我建议使用 zypper 来更新 /usr/lib,因为它是操作系统配置更新的特定工具。 /usr/local/lib 可能也是如此,因为它确实是“系统”的一部分,但这完全取决于您,哪种方法可能最有意义,例如如果您需要将配置复制到另一台主机。对于 homedir 中的内容,这取决于您,但如果您决定迁移到新操作系统上的新主机,pip 仍然可用,因此该环境将更容易重新创建。

    【讨论】:

      猜你喜欢
      • 2020-01-06
      • 2021-01-19
      • 2020-11-11
      • 1970-01-01
      • 2010-11-28
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多