我想我应该只针对安装要求,就像我在这里做的那样:
固定: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 pre-commit auto-update
,pytest更新pip install --upgrade -r requirements-dev.pip
等,以便可能解决更多问题)
我认为这里的正确答案是应该有两个文件,一个具有许可要求,另一个带有固定的,经过测试的软件包。由于大多数python项目都使用单个requirements.txt
(或者在你的情况下,requirements.pip
)文件中分发,因此现在无法以一种简单易用的方式实现,但未来的某个时间pipfile
可能会成为新的标准。
简而言之,我认为您当前的方法是可以的,不需要修复或任何东西,但最佳解决方案将包括一个看起来像这样的reqirements
文件并手动维护:
certifi
chardet
idna>=2.3
和一个lockfile
看起来像是由一些工具(例如pip freeze
)在成功部署后创建的:
certifi==2019.3.9
chardet==3.0.4
idna==2.6
如果您认为这对您的项目有意义,请随时成为已建立的锁定文件格式的早期采用者(通过pipenv
或poetry
之类的工具),这比原始文本文件要好得多。
为了回答关于区分开发包和非开发包的问题,pipfile
格式将它们包含在同一个文件和不同的部分中,并将它们全部取消固定在pip文件中并固定在lockfile中。这似乎是编写pipfile代码的the guys in charge of python packaging的方法,所以我只是继续并相信他们的判断。