我想我应该只固定安装要求,例如我在这里所做的:
固定:
https://github.com/Laurentiu-Andronache/nano-python/blob/master/requirements.pip
未固定,因为它们是开发人员要求:
https://github.com/Laurentiu-Andronache/nano-python/blob/master/requirements-dev.pip
这样做的好处是,对于安装该应用程序的用户而言,它是可以正常使用的.开发人员将能够利用开发人员工具的改进(更好的git hooks预先提交自动更新,pytest更新pip install –upgrade -r requirements-dev.pip等,以便潜在地解决更多问题)
最佳答案
我认为这里的正确答案是应该有两个文件,一个文件具有宽松的要求,另一个文件具有经过测试的固定套件.由于大多数python项目仅使用一个requirements.txt文件(或您的情况,即requirements.pip)进行分发,因此目前尚无法通过简便的方式实现,但是将来的某个时候
pipfile
可能会成为新的标准.
简而言之,我认为您当前的方法尚可,不需要固定或任何其他方法,但是一种最佳解决方案将包括一个如下所示的需求文件,并由人工维护:
certifi
chardet
idna>=2.3
和一个看起来像这样的锁文件,它是在成功部署后由某些工具(例如pip冻结)创建的:
certifi==2019.3.9
chardet==3.0.4
idna==2.6
如果您认为这对您的项目有意义,请随时成为已建立的锁定文件格式的早期采用者(通过pipenv
或poetry
之类的工具),这比原始文本文件要好得多.
为了回答有关区分dev和非dev软件包的问题,pipfile格式将它们包含在同一文件和不同部分中,并且将它们全部取消固定在pipfile中,并将其固定在lockfile中.这似乎是the guys in charge of python packaging编写pipfile代码的方法,所以我会继续相信他们的判断.