在Python中,命名空间包允许您在多个项目中传播Python代码.当您想要将相关库作为单独的下载发布时,这非常有用.例如,使用目录Package-1和Package-2in PYTHONPATH,
Package-1/namespace/__init__.py
Package-1/namespace/module1/__init__.py
Package-2/namespace/__init__.py
Package-2/namespace/module2/__init__.py
Run Code Online (Sandbox Code Playgroud)
最终用户可以import namespace.module1和import namespace.module2.
定义命名空间包的最佳方法是什么,因此多个Python产品可以在该命名空间中定义模块?
我正在努力将Python作为我团队开发工具套件的一部分.使用我们使用的其他语言/工具,我们开发了许多可重用的函数和类,这些函数和类特定于我们的工作.这标准化了我们做事的方式,并节省了大量的车轮重新发明.
我似乎无法找到通常用Python处理它的任何示例.现在我在本地驱动器上有一个开发文件夹,下面有多个项目文件夹,还有一个包含可重复使用的类和函数的包和模块的附加"公共"文件夹.这些"通用"模块由多个项目中的模块导入.
Development/
Common/
Package_a/
Package_b/
Project1/
Package1_1/
Package1_2/
Project2/
Package2_1/
Package2_2/
Run Code Online (Sandbox Code Playgroud)
在尝试学习如何分发Python应用程序时,似乎假设所有引用的包都低于顶级项目文件夹,而不是它的附属物.我还想到,也许正确的方法是在单独的项目中开发通用/框架模块,并且经过测试,通过安装到site-packages文件夹将它们部署到每个开发人员的环境中.然而,这也引发了重新分配的问题.
任何人都可以阐明这一点,或者指出我讨论这个问题的资源?
命名空间Python包(no __init__.py)和常规Python包(有__init__.py)之间的区别是什么,特别是当__init__.py常规包为空时?
我很好奇,因为最近我忘了制作__init__.py我制作的包装,我从来没有注意到任何问题.实际上,它们似乎与常规包装相同.
编辑:仅支持Python 3.3的命名空间包(参见PEP 420),所以很自然地,这个问题仅适用于Python 3.