我工作的小组一直在使用和开发一个Python包,对于这个问题,我将其称为foobuilder
。我们使用为用户提供的私有RPM和Deb存储库为Linux系统提供更新。在
最近,在PyPi中添加了一个同名的公共包。它还被打包到公共Debian存储库中。既然我们没有公开宣传我们的包裹,那么出现一个同名的包裹是可以理解的。在
这看起来是foobuilder
的一个大问题,因为在后面的某个地方,用户可能会试图安装我们的foobuilder
,而公共的foobuilder
包安装在同一个系统上。在
除了Python中明显的问题之外,我想将我们的存储库添加到Debian包管理器程序中也会导致一些问题,尽管我还没有讨论过这种情况。在
由于我们多年来一直在使用专有的foobuilder
,因此有大量的代码希望import foobuilder
并希望得到我们的包,所以我认为更改名称是不可行的。在
我考虑过将包的名称改为my_foobuilder
,并让它包含一个名为foobuilder
的元包,它只包含一个__init__.py
,它从my_foobuilder
导入所有内容。我可以指示新用户直接导入my_foobuilder
。然后我可以开始反对foobuilder
名称。最后,这将导致与我现在将foobuilder
更改为my_foobuilder
相同的工作量,因为每个人都需要得到更新,foobuilder
名称不可能永远处于贬抑炼狱中。在
Debian问题应该不太难解决;我可以将Debian包的名称改为my_foobuilder
,但仍要安装相同的(冲突的)Python包。然后我可以用foobuilder
将my_foobuilder
包设置为Conflict
。它可能需要用户摆弄他们的包管理器,以使事情回到正轨,但我认为这不是什么大不了的。不过,这会阻止用户同时使用公共foobuilder
包。在
有没有比我上面考虑过的更容易或更好的方法来处理这种情况?我正在考虑的解决方案有什么问题吗?你会怎么处理?在
我认为只要控制住了,在这里使用一个kludge就可以了。如果我在您的情况下,我会创建一个带有其他标识符的文件,比如
so.py
,并将内容那么包可以被引用为我的美食家毫不含糊地不要求任何一个团队更改他们的产品名称。这不是一个很好的解决方案,因为所有的内部结构都需要改变,但是它应该能够在不需要更多修复的情况下解决冲突。在
我会给foobuilder软件包的新作者发邮件来讨论这个问题。很明显,你们中的一个需要改变包名,因为你的程序是专有的,所以改变它的名字是不可取的。。。向新软件包作者提出这个问题可能会想出一些新的解决方案。在
确实没有一种明智的方法让Python处理这个问题,所以“import foobuilder”可能意味着两件事。在
符号链接?在
非常简单,尽管有点老土:)
相关问题 更多 >
编程相关推荐