Python whl文件是否可以聚合其他whl文件

Python whl文件是否可以聚合其他whl文件,python,module,package,components,python-wheel,Python,Module,Package,Components,Python Wheel,whl文件能否聚合其他whl文件 我意识到您可以创建一系列相关的whl文件,并让它们通过引用install_requires()中的依赖模块相互引用 然而,我感兴趣的是在whl文件中聚合一些依赖项 我正在用python构建一个基于“组件”的(图表)系统——不同的团队可以独立开发这些“图表”组件,并将它们插入到整个系统中。这些组件的独立性意味着它们可能在不同的生命周期中开发,并且具有不同版本的共享代码(公共模块) 这就是为什么我希望在每个单独的图表组件中聚合这些模块,而不是引用(如果两个图表组件依

whl文件能否聚合其他whl文件

我意识到您可以创建一系列相关的whl文件,并让它们通过引用install_requires()中的依赖模块相互引用

然而,我感兴趣的是在whl文件中聚合一些依赖项

我正在用python构建一个基于“组件”的(图表)系统——不同的团队可以独立开发这些“图表”组件,并将它们插入到整个系统中。这些组件的独立性意味着它们可能在不同的生命周期中开发,并且具有不同版本的共享代码(公共模块)

这就是为什么我希望在每个单独的图表组件中聚合这些模块,而不是引用(如果两个图表组件依赖于公共组件的不同版本,则引用会导致问题)


因此,这个问题是一个whl文件打包问题(直截了当的组合方式)和一个关于pythons模块系统支持聚合模块的能力的问题,这样它们就不会在全局sys.modules对象中注册,而只是在给定模块中使用(在我的例子中是图表组件).

@lewis你为什么要这么做?考虑到通过安装工具可以确保
install\u requires
包含您想要的软件包内容,为什么会这样?因为如果它是版本化的,那么它已经发布了,并且可以在PyPI中使用。您只需在
安装所需的
中引用相同的版本即可。这些版本不会因您的怀疑而改变:
它们可能在不同的生命周期中开发,并且具有不同版本的共享代码
python模块系统并不是真正为npm风格的多版本化设计的。您可以将一个模块作为包的子模块提供(但这通常需要重写该模块中的内部导入,并且可能非常脆弱)。您可能对zipapps感兴趣,但它更适合于独立应用程序,而不是独立应用程序libraries@AnthonySottile你是对的,但是如果我们认真考虑通过版本控制来隔离依赖冲突,最终有办法通过VirtualEnv隔离依赖冲突,假设你有一个应用程序的X版本,你可以始终拥有一个版本a的库,并运行它和你的应用程序的版本Y,你可以始终拥有一个版本B的库。整个whl导入whl看起来不一样possible@ukBaz是的,我已经阅读了关于包的文档。@Nagarajtanri想要聚合的原因是,我可能会有冲突。想象一下,我正试图创建一个复杂的模块化系统,不同的人在不同的时间框架内处理不同的组件。并想象一些用户(在他们自己的时间范围内)将这些东西结合起来。一个具体的例子读起来可能更好——因此假设组件是图表类型(散点图、条形图等)。@lewis你为什么要这样做?考虑到通过安装工具可以确保
install\u requires
包含您想要的软件包内容,为什么会这样?因为如果它是版本化的,那么它已经发布了,并且可以在PyPI中使用。您只需在
安装所需的
中引用相同的版本即可。这些版本不会因您的怀疑而改变:
它们可能在不同的生命周期中开发,并且具有不同版本的共享代码
python模块系统并不是真正为npm风格的多版本化设计的。您可以将一个模块作为包的子模块提供(但这通常需要重写该模块中的内部导入,并且可能非常脆弱)。您可能对zipapps感兴趣,但它更适合于独立应用程序,而不是独立应用程序libraries@AnthonySottile你是对的,但是如果我们认真考虑通过版本控制来隔离依赖冲突,最终有办法通过VirtualEnv隔离依赖冲突,假设你有一个应用程序的X版本,你可以始终拥有一个版本a的库,并运行它和你的应用程序的版本Y,你可以始终拥有一个版本B的库。整个whl导入whl看起来不一样possible@ukBaz是的,我已经阅读了关于包的文档。@Nagarajtanri想要聚合的原因是,我可能会有冲突。想象一下,我正试图创建一个复杂的模块化系统,不同的人在不同的时间框架内处理不同的组件。并想象一些用户(在他们自己的时间范围内)将这些东西结合起来。一个具体的例子读起来可能更好——因此假设组件是图表类型(散点图、条形图等)。