如Rails 上的 Ubuntu wiki 页面所述,建议使用 gems 管理您的 Rails/Ruby 依赖项。
像 Django 这样的 Python 包的最佳实践是什么?我应该通过 apt-get 安装它们还是应该让 easy_install/pip 从 PyPi 获取它们?
Oli*_*Oli 29
有几种说法:
这大多是真的。例如,如果您python-django像我一样安装,您将获得安全更新。这很好,因为您只需要保持 apt 的领先地位,但您仍然需要在推送更新之前进行测试(尽管每次测试都应该没问题)。
您可能会争辩说,如果您使用pip,您可能永远不会检查更新。
pip以便您可以使用正确的“稳定”版本。毫无疑问:回购落后于现实世界。Django 是 2.0,但是 Ubuntu LTS 版本的存储库(很多人坚持使用服务器)在 Ubuntu 16.4 lts 和 Python 2 上只能获得 1.8,但仍然可以获得安全更新。
pip随时为您提供最新信息。你只需要自己更新它们。
当你将 Ubuntu 升级到下一个版本时,它会升级很多包。很多事情都会改变。我知道在 Django 中,这意味着您必须注意代码不兼容、弃用……但这同样适用于所有其他 Python 代码。
这同样适用于pip但pip您一次只能做一件事。您知道导致问题的原因,因此您知道在哪里可以找到修复程序。
pip+virtualenv让你把事情分开virtualenv让您拥有可移植的小型 Python 环境。这允许您在同一台机器上同时运行多个不同的 Python 环境。
显而易见的好处似乎是维护,因为您可以像管理代码一样管理环境。甚至将环境也存储在 VCS 中……但您应该记住,有 12 个不同的virtualenvs 意味着您需要检查和更新 12 个环境。
编辑:在服务器上进行了一系列可怕的升级以将其从 Lucid 升级到 Precise 之后,我已从混合 Apt+pip(nr 1 和 2)切换到纯 pip+virtualenv(nr.4)情况。每个站点没有一个 virtualenv,我在十几个站点之间共享了一个。这是现在工作。
我还必须编写一个小脚本来检查使用 pip 安装的软件包的状态。如果有更新,我必须手动应用它们(这很好,因为我在本地 virtualenv 中测试它们)。这一切仍然比最初更痛苦,但从长远来看要好得多。
Ste*_*zzo 10
来自存储库的包
只要您的应用程序以某种方式,这些应该安装特定的到Ubuntu。它们向您保证可以在 Ubuntu 机器上安装的稳定版本,它们受到支持,有时比您通过 pip 获得的版本更成熟。如果您部署了一堆 ubuntu 服务器,或者您正在编写 Ubuntu 应用程序,请使用这些(如果可用)。
它们有时还包含特定于 Ubuntu 的修改。
pip 与 easy_install
即使世界没有什么好说的那些,如Django的黑客詹姆斯·贝内特说的那样:
出于对 Guido 的热爱,请停止使用 setuptools 和 easy_install,而使用 distutils 和 pip。
有关分歧进行了深入的讨论,请参见包装上的由詹姆斯·贝内特(Django的)和几个更正“包装上的”伊恩Bicking(Mozilla浏览器中)。
如果你想成为安全,尝试一下你的点子部署使用的virtualenv。这给你一个孤立的Python环境,所以你可以确保你的应用程序将在任何机器上运行。
稍等一下,虽然,我相信一定会有人不同意我。
| 归档时间: |
|
| 查看次数: |
14951 次 |
| 最近记录: |