背景
我与之合作的小组一直在使用和开发Python软件包,出于这个问题的目的,我将其称为foobuilder
。我们使用为用户提供的专用RPM和Deb存储库为Linux系统提供更新。
最近,一个公共(public)包被添加到了同名的PyPi中。它也被打包在公共(public)Debian仓库中,以及其他地方。由于我们没有公开宣传我们的软件包,因此弹出具有相同名称的软件包是可以理解的。
顾虑
对于foobuilder
来说,这似乎是一个大问题,因为在某个地方,用户可能会尝试在同一系统上安装公共(public)foobuilder
包的同时安装我们的foobuilder
。
除了Python中明显的问题外,我猜想我们将存储库添加到Debian软件包管理器程序中也会引起一些问题,尽管我还没有解决这种情况。
问题
由于我们多年来一直使用专有的foobuilder
,因此存在大量想要import foobuilder
并希望获得我们的软件包的代码,因此我认为更改名称并不可行。
我对可能解决方案的想法
Python
我已经考虑过将包的名称更改为my_foobuilder
,并使其包含一个名为foobuilder
的元包,该元包仅包含一个从__init__.py
导入所有内容的my_foobuilder
。我可以指示新用户直接导入my_foobuilder
。然后,我可以开始弃用foobuilder
名称。最后,这将导致与现在将foobuilder
更改为my_foobuilder
相同的工作量,因为需要为每个人提供更新,并且foobuilder
名称不能永远处于弃用炼狱状态。
Derby 安
Debian问题不应该太难解决。我可以将debian软件包名称更改为my_foobuilder
,但仍要安装相同的(冲突的)Python软件包。然后,我可以使用my_foobuilder
将Conflict
包设置为foobuilder
。可能需要用户摆弄他们的包管理器,以使过渡期间的事情恢复正常,但我认为这没什么大不了的。尽管如此,这仍会阻止用户同时使用公共(public)foobuilder
包。
问题
有没有比我上面考虑的更简单或更好的方法来处理这种情况?我正在考虑的解决方案是否存在任何问题?您将如何处理?
最佳答案
我会给新的foobuilder软件包作者发送电子邮件来讨论该问题。显然,你们其中之一需要更改软件包名称;由于您程序的专有性质,可能不希望更改其名称。向新软件包的作者提出此问题可能会提出一些新的解决方案。
确实没有让Python以某种方式处理此问题的明智方法,因此“import foobuilder”可能意味着两件事。