Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是";“锁定”;conda和x27中的要求;这是个好主意吗?_Python_Conda - Fatal编程技术网

Python 是";“锁定”;conda和x27中的要求;这是个好主意吗?

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:

在最近与一位同事的对话中,我们讨论了在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:
    - 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'