当安装外部python包全局时,本地?点子或系统包管理器?

时间:2017-02-02 16:12:40

标签: python pip global packages local

我对安装外部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

  4. 我将OpenSuse与包管理器zypper一起使用,并且可以访问用户root。

    我(想到)了解pip的原因是: - pip只需下载最新版本 - 对于已安装的包裹,如果有更新的版本,则不会被检查 - 自己的包可以安装在虚拟环境中 - 下载和安装的时间比zypper多 - 可以进行本地或全球安装。

    我系统的包管理器:
    - 下载和安装速度更快 - 仅在全局安装软件包。

    我的问题是我何时以及为什么要进行安装:pip(本地,全球)或zypper? 我已经阅读了很多关于这个问题但是无法清楚地回答这个问题......

1 个答案:

答案 0 :(得分:0)

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

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

您的主目录中的东西都是您的,所以就像您一样。如果您正在为自己编写一些内容,尤其是您可能需要将脚本移植到其他框/操作系统中,请使用此选项。

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

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