Python中文
首页
教程
问答
标签
搜索
登录
注册
如何处理专有Python包名与公共包名冲突的问题?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<h2>背景</h2> <p>我工作的小组一直在使用和开发一个Python包,对于这个问题,我将其称为<code>foobuilder</code>。我们使用为用户提供的私有RPM和Deb存储库为Linux系统提供更新。在</p> <p>最近,在PyPi中添加了一个同名的公共包。它还被打包到公共Debian存储库中。既然我们没有公开宣传我们的包裹,那么出现一个同名的包裹是可以理解的。在</p> <h2>关注</h2> <p>这看起来是<code>foobuilder</code>的一个大问题,因为在后面的某个地方,用户可能会试图安装我们的<code>foobuilder</code>,而公共的<code>foobuilder</code>包安装在同一个系统上。在</p> <p>除了Python中明显的问题之外,我想将我们的存储库添加到Debian包管理器程序中也会导致一些问题,尽管我还没有讨论过这种情况。在</p> <h2>问题</h2> <p>由于我们多年来一直在使用专有的<code>foobuilder</code>,因此有大量的代码希望<code>import foobuilder</code>并希望得到我们的包,所以我认为更改名称是不可行的。在</p> <h2>我对可能的解决方案的想法</h2> <h3>Python</h3> <p>我考虑过将包的名称改为<code>my_foobuilder</code>,并让它包含一个名为<code>foobuilder</code>的元包,它只包含一个<code>__init__.py</code>,它从<code>my_foobuilder</code>导入所有内容。我可以指示新用户直接导入<code>my_foobuilder</code>。然后我可以开始反对<code>foobuilder</code>名称。最后,这将导致与我现在将<code>foobuilder</code>更改为<code>my_foobuilder</code>相同的工作量,因为每个人都需要得到更新,<code>foobuilder</code>名称不可能永远处于贬抑炼狱中。在</p> <h3>德比安</h3> <p>Debian问题应该不太难解决;我可以将Debian包的名称改为<code>my_foobuilder</code>,但仍要安装相同的(冲突的)Python包。然后我可以用<code>foobuilder</code>将<code>my_foobuilder</code>包设置为<code>Conflict</code>。它可能需要用户摆弄他们的包管理器,以使事情回到正轨,但我认为这不是什么大不了的。不过,这会阻止用户同时使用公共<code>foobuilder</code>包。在</p> <h2>问题</h2> <p>有没有比我上面考虑过的更容易或更好的方法来处理这种情况?我正在考虑的解决方案有什么问题吗?你会怎么处理?在</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>符号链接?在</p> <pre><code>$ echo "print 'foo'" > foo.py $ ln -s foo.py bar.py $ python -c "import foo; import bar" foo foo </code></pre> <p>非常简单,尽管有点老土:)</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
plt.savefig不会覆盖现有文件
3 回答
plt.savefig不保存图像
4 回答
plt.savefig在jupyter笔记本中不起作用
8 回答
plt.savefig在从另一个fi调用时停止工作
8 回答
plt.savefig在调用plt.show之前保存空数字
3 回答
plt.save不创建png文件
9 回答
plt.scatter overlay分类数据帧列
3 回答
Plt.Scatter:如何添加title、xlabel和ylab
1 回答
plt.scatter()绘图与Matplotlib中的plt.plot()绘图类似
4 回答
plt.scatter错误'NoneType'对象在成功运行后没有属性'sqrt'
4 回答
plt.set_title()中的标题字符串有误
8 回答
plt.show()
9 回答
plt.show()不在Jupyter笔记本上渲染任何内容
7 回答
plt.show()不打印plt.plot only plt.scatter
6 回答
plt.show()不显示三维散射图像
10 回答
plt.show()不显示任何内容
4 回答
plt.show()不显示数据,而是保留它供下一个图表使用(spyder)
7 回答
plt.show()使终端挂起
10 回答
plt.show()无法使用此代码
3 回答
plt.show()没有打开新的图形风
7 回答