我应该在 PyPI 发布的包中测试不受支持的 Django 版本吗?

Posted

技术标签:

【中文标题】我应该在 PyPI 发布的包中测试不受支持的 Django 版本吗?【英文标题】:Should I test for unsupported Django versions in PyPI published packages? 【发布时间】:2015-11-02 00:43:27 【问题描述】:

我有一些关于 PyPI 的包,其中一些是其他人实际使用的。

当我放弃对旧 Django 版本的支持时,通知用户的最佳方式是什么(除了更改日志/历史文件)?

编辑:我知道在setup.py 中使用install_requires,但是如果有人安装我的包,这将安装Django。我认为这是不好的做法,Django 组件不应该安装 Django 本身。其他包作者似乎同意这一点(查看 Django REST Framework),但并非全部(查看 Django 调试工具栏)。

如果 Django 版本不匹配,我应该明确地使应用程序失败吗?我可以把它优雅地放在setup.py 中(不强制安装 Django)吗?其他解决方案(最好是最佳实践)?欢迎输入!

【问题讨论】:

【参考方案1】:

您可以在 setup.py 和需求文件中指定您的需求。 假设您正在为高于 django 1.6 的 django 版本提供支持。

from distutils.core import setup

setup(
     ...
     install_requires = [
          'django>1.6'
     ],
)

您也应该将django>1.6 添加到您的需求文件中。

如需进一步指导,请咨询 - documentation

【讨论】:

感谢您指出这一点。我应该补充一点,我同意 Django 包不应该为您安装 Django 的做法(参见 Django REST framework 和其他作为一个很好的例子)。我已将这个答案连根拔起,并将澄清我的问题。

以上是关于我应该在 PyPI 发布的包中测试不受支持的 Django 版本吗?的主要内容,如果未能解决你的问题,请参考以下文章

从需求文件中删除未使用的包

异常应该放在单独的包中吗?

我的模型文件应该保留在不同的包中还是 Django 中的相同模型文件中?

接口应该放在单独的包中吗? [关闭]

使用 pytest 运行测试时出现问题 - 在我自己的包中找不到模块

如何将 .SQLite 正确添加到 App 的包中?