2017-02-02 34 views
0

我感到困惑安装外部Python包的可能性:当安装外部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与包经理zypper并有机会获得root用户。

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

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

我的问题是什么时候,为什么我应该做的安装:pip(本地和全球)或zypper
我读过很多关于这个问题,但无法清楚地回答这个问题......

回答

0

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

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

你家目录中的东西都是你的,你也会如此。如果你只是为自己写一些东西,特别是如果你需要脚本可以移植到其他盒子/操作系统的话,请使用它。

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

在使用zypper或pip方面,我建议使用zypper更新/ usr/lib,因为它是OS配置更新的特定工具。对于/ usr/local/lib也可能是相同的,因为它实际上是“系统”的一部分,但这真的取决于你,哪种方法可能最有意义,例如,如果你需要复制配置另一台主机。对于你的homedir中的东西,这取决于你,但是如果你决定在新的操作系统上移动到新主机,点将仍然可用,并且环境将更容易重新创建。

相关问题