Python中包的供应商名称空间

时间:2014-04-10 09:43:31

标签: python python-3.x

我们从Python开始,似乎我们会有很多我们不会开源的软件包,但是想要命名它们,因为它们会有routinelog等常用名称。

在C#中,通常使用company \ opensource基础名称为库的名称空间加前缀,或者在ActionScript创建名称空间中通过反转url:com.example.project1.routine

据我所知,Python包并不打算用作命名空间,而且包树很平,所以它的方式是什么?

1 个答案:

答案 0 :(得分:3)

似乎没有一条规则。

某些公司将其身份识别作为其所有套餐的前缀,例如'zope'(见their packages on PyPI)或'集体'(谁是一群贡献者而非公司; here are their packages)。

另一种方法是将您的包命名为'yourcompany_package',并带有下划线。 '金字塔'项目does that和'sphinx'贡献者使用下划线,连字符和其他符号组合build the identifier

所以,你可以自由选择;但是使用“反向URL”方法确实非常罕见:它太像Java了。 :)

修改

有一种setuptools机制可让zope.interface命名自动生效,称为namespace_packages。在setup.py中使用此关键字可以防止贵公司引入手动错误。

同样可以在Python 3.3或更高版本中隐式执行,省略了包文件夹中的传统__init__.py文件(然后将其转换为命名空间包;有关详细信息,请参阅PEP 420。)

感谢@eryksun提供了这些有用的指示!