【问题标题】:Psycopg2: to upgrade or not to upgradePsycopg2:升级还是不升级
【发布时间】:2019-12-12 11:11:05
【问题描述】:

我刚刚将我的开发虚拟环境从 Django 1.11 升级到最新的 2 版本(2.2.8),并将各种知名应用程序和 django 支持也升级到了最新版本。修复各种向后不兼容问题后,一切似乎都很好。

现在我正在查看pip list -o 的结果,看看哪些内容没有升级。大多数是我可以自己查看的应用程序代码。但是,psycopg2 是 Django 和 Postgresql(我刚刚升级到 12)之间“管道”的重要部分。我安装了 2.7.3.2。最新的是 2.8.4。我对升级意味着什么、做什么或修复什么以及任何问题可能是什么样子没有任何感觉。

如果 Django 版本对已安装的内容不满意,我是否可以假设升级安装 Django 会升级 Psycopg2?我在哪里可以找到这个版本的 Django 推荐的内容?更一般地说,我是否应该升级它,如果升级到最新的 2.7 或最新的 2.8? (FWIW 我注意到 Centos 7.7 只发布了 2.5.1 !)

【问题讨论】:

    标签: django upgrade psycopg2


    【解决方案1】:

    Django 2.2 supports PostgreSQL 9.4 and higher. psycopg2 2.5.4 or higher is required, though the latest release is recommended.

    不,除非需要特定功能/错误修复,否则无需升级。

    虽然我个人的偏好是跟上最新版本,尤其是在 dev 中(当然,查看所有依赖项都支持它)。

    是的,如果您想使用 Postgresql 12,则需要升级 psycopg2,因为仅在 psycopg2 2.8.4 之后才添加了对 postgresql 12 的支持。

    此类核心包开发完善,保持向后兼容性,基本功能几乎没有变化。

    还有一点需要注意:psycopg2 被分成两个包(在 2.8 之后更加独立) - psycopg2psycopg2-binary。为了不深入细节,建议在requirements.txt 中设置选项(如果您使用的是virtualenv):

    • 开始 - psycopg2-binary
    • 如果有任何 ssl 问题,或者想从源代码构建 - 然后设置 psycopg2

    看起来您正在使用系统范围的 python 包安装,由 os 分发存储库提供。

    虽然不建议急于切换,但肯定会建议考虑使用 virtualenv(使用诸如 pipenv 或 virtualenwrapper 之类的帮助程序)为每个项目单独提供良好的本地 python 环境,并直接从 pypi 安装包并且不绑定到操作系统供应商。

    【讨论】:

    • @Oleg_Ruskin 不是每个人都使用 virtualenv 进行开发吗?没有将是一场噩梦。 Postgres 是唯一的站点包,它非常好地允许同时安装多个版本,但端口号不同。认为是时候让 12 旋转一下了。
    • 是的,virtualenv 是必备的。
    • BTW Postgresql12 + Psycopg2 2.7.3.2 “工作”,就像我正在开发的东西一样。在这种情况下,不支持并不意味着明显损坏。但我现在已经升级到 psycopg2-binary 2.8.4。
    猜你喜欢
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 2019-05-07
    • 2016-07-24
    • 1970-01-01
    相关资源
    最近更新 更多