Python 跨组织协调软件包版本

Python 跨组织协调软件包版本,python,pip,setup.py,distutils,azure-artifacts,Python,Pip,Setup.py,Distutils,Azure Artifacts,我在一家中型公司工作,那里有10个python软件包和内部开发的项目。它们部分地相互依赖,并且通常具有相同的包要求,例如pandas、sklearn等 当我们升级各种系统时,我们现在正处于一个矛盾的需求导致问题的阶段 我们使用azure平台和它上面的工件提要,因此任何修复版本的方法都是最可取的选择,但我在文档中没有找到这样做的方法,看起来你必须至少有5个不同的版本 理想情况下,我希望需求文件只指定包名,然后通过控制服务器上可用的版本来设置升级时使用的版本。有好的解决办法吗 我看到的选择是: 指

我在一家中型公司工作,那里有10个python软件包和内部开发的项目。它们部分地相互依赖,并且通常具有相同的包要求,例如
pandas
sklearn

当我们升级各种系统时,我们现在正处于一个矛盾的需求导致问题的阶段

我们使用azure平台和它上面的工件提要,因此任何修复版本的方法都是最可取的选择,但我在文档中没有找到这样做的方法,看起来你必须至少有5个不同的版本

理想情况下,我希望需求文件只指定包名,然后通过控制服务器上可用的版本来设置升级时使用的版本。有好的解决办法吗

我看到的选择是:

  • 指定pyrc以使用专用Pypi服务器

    • 托管此服务器上使用的所有包,以便永远不会调用pypi
    • 控制服务器上的版本
  • 使requirents.txt成为二进制文件,读取时返回一个具有正确版本的列表,并从某个中央服务器更新

  • pip
    setup.py
    的一种添加,它将所需包的名称发送到中央服务器,并根据需要获取固定版本包的列表


还有其他不那么随便的想法吗?

我不完全确定我是否理解你在寻找什么。如果我没有误解约束和需求文件的工作原理,也许可以帮助…@sinoroc。我想集中修复使用的各种软件包的版本,这样升级就可以同步进行,并且可以从一个地方而不是10个不同的回购点进行控制。1.设置并维护一个私有索引,并让您的同事将其用作pip的主索引(看起来您已经考虑过了)。2.在公司范围内维护一个
constraints.txt
文件(不是特定于软件包),并让您的同事(和工具:CI等)在每次安装时将其提供给pip(
pip install Something-c constraints.txt
),因此,如果必须安装依赖项,并且该依赖项列在
constraints.txt
中,则此文件中的版本范围限制适用。@sinoroc这是一个不错的主意,如果我能找到一种简洁的方法,将约束条件提供给所有回购协议,我们可能会有一个赢家。我在想git hooks。你要找的是
pipenv
poetry
中的版本锁定吗?