Python 是";“锁定”;conda和x27中的要求;这是个好主意吗?
在最近与一位同事的对话中,我们讨论了在meta.yaml文件中“锁定”或指定某个主要版本是否是最佳做法,如下所示:Python 是";“锁定”;conda和x27中的要求;这是个好主意吗?,python,conda,Python,Conda,在最近与一位同事的对话中,我们讨论了在meta.yaml文件中“锁定”或指定某个主要版本是否是最佳做法,如下所示: requirements: build: - python 3.5.* - pyserial 2.7.* run: - python 3.5.* - pyserial 2.7.* 而不是 requirements: build: - python >=3.5 - pyserial >=2.7 run:
requirements:
build:
- python 3.5.*
- pyserial 2.7.*
run:
- python 3.5.*
- pyserial 2.7.*
而不是
requirements:
build:
- python >=3.5
- pyserial >=2.7
run:
- python >=3.5
- pyserial >=2.7
我理解他的担忧,例如pyserial的开发人员可能会对版本3.0进行重大更改,这将破坏我们的模块。这种担心是否有理由锁定相当特定的依赖项版本
我认为,虽然依赖关系很可能会破坏我们的代码,但编写这些依赖关系的人正在考虑很多这方面的问题,如果有什么东西会破坏,那么无论如何,降级到工作版本都是微不足道的。我还没有见过像他建议的那样限制性的模型。这有什么原因吗?关于这一点:
requirements:
build:
- python 3.5.*
- pyserial 2.7.*
run:
- python 3.5.*
- pyserial 2.7.*
您没有锁定主要版本,但在次要版本上,锁定主要版本需要:
requirements:
build:
- python 3.*.*
- pyserial 2.*.*
run:
- python 3.*.*
- pyserial 2.*.*
(或者可能只有一个*
,而不是*.
)
这种锁定相当于使用次要版本号上的codepip/code安装时使用=
和=
)将破坏某些内容
这些语义对于每个包都不相同。尤其是当主版本为0时,软件包可能仍会更改,您可能希望修复次版本号(例如,使用0.3.*,或在pip中:>=0.3,
pip install 'some.package>=0.14.0,<0.15'
pip install 'some.package>=0.0,<1.0'