easy_install / pip或apt-get

Modified on: Sat, 09 Jun 2018 23:41:23 +0800

如Ubuntu Rails上的wiki页所述,建议gems管理您的Rails / Ruby依赖项。

Django等Python软件包的最佳实践是什么?我应该通过apt-get安装它们还是让easy_install / pip从PyPi中获取它们?

最佳答案

有几个论点:

  1. 使用存储库/ PPA,因为它们可以使您保持稳定和最新的安全修复程序。


    这大部分都是正确的。例如,如果您按原样安装python-django,则会获得安全更新。这很好,因为你只需要掌握apt,但是在推送更新之前你仍然需要进行测试(尽管每次测试都应该没问题。)

    您可能会争辩说,如果您使用pip,则可能永远不会检查更新。

  2. 使用pip,以便使用正确的“稳定”版本。


    毫无疑问:回购落后于现实世界。 Django是2.0但是UTSntu的LTS版本的回购(许多人坚持使用服务器)你只使用Python 2在Ubuntu 16.4 lts上获得1.8但仍然获得安全更新。

    pip始终为您提供最新信息。你只需要自己更新它们。

  3. 升级回购使用的Python安装可能是一场噩梦


    当您将Ubuntu升级到下一个版本时,它会升级很多软件包。很多事情都在改变。我知道在Django中这意味着你必须小心注意代码不兼容,弃用......但这同样适用于所有其他Python代码。

    对于pip也是如此,但是使用pip,你可以一次做一件事。您知道导致问题的原因,以便您知道在哪里找到修复程序。

  4. pip + virtualenv可让您将事物分开


    virtualenv让您拥有可移植的小型Python环境。这允许您在同一台计算机上将几个不同的Python环境并排运行。

    显而易见的好处似乎是维护,因为您可以像管理代码一样管理环境。甚至将环境存储在VCS中...... 你应该记住,有12个不同的virtualenv s意味着需要检查和更新的12个环境。

  5. 醇>

    编辑:在服务器上进行了一系列可怕的升级以将其从Lucid转移到Precise之后,我已经从混合的Apt + pip(nr 1和2)切换到纯粹的pip + virtualenv(nr.4)情况。我没有每个站点有一个virtualenv,而是在十几个站点之间有一个共享站点。这个目前正在运作。

    我还必须编写一个小脚本来检查使用pip安装的软件包的状态。如果有更新,我必须手动应用它们(这很好,因为我在本地测试它们,在本地virtualenv)。这一切仍然比最初更痛苦,但从长远来看,很多更好。


相关问答

添加新评论