Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何为大型项目分发可选的Python子包?_Python 3.x_Package - Fatal编程技术网

Python 3.x 如何为大型项目分发可选的Python子包?

Python 3.x 如何为大型项目分发可选的Python子包?,python-3.x,package,Python 3.x,Package,我有一些现有的较大的python包“mainproject”,它通过从该包导入模块来使用,例如从mainproject导入m1、m2、m3。该包已经包含子包,因此也可以从mainproject执行。sub1导入sub1m1,sub1m2 现在这个项目已经变得越来越大,并且有一些并非每个人都想要的附加模块。但如果能将它们安装到相同的包结构中,那就太好了 因此,例如,如果以后可以安装一个包,以便在安装后可以从mainproject.sub4导入… 我是否可以拥有一个名为“mainproject_su

我有一些现有的较大的python包“mainproject”,它通过从该包导入模块来使用,例如从mainproject导入m1、m2、m3。该包已经包含子包,因此也可以从mainproject执行
。sub1导入sub1m1,sub1m2

现在这个项目已经变得越来越大,并且有一些并非每个人都想要的附加模块。但如果能将它们安装到相同的包结构中,那就太好了

因此,例如,如果以后可以安装一个包,以便在安装后可以从mainproject.sub4导入…

我是否可以拥有一个名为“mainproject_sub4”的附加发行版,它提供包结构
mainproject/sub4
,并认为可以工作

这可能吗?我见过“名称空间包”,但为了使用它们,我认为当前项目必须完全重构,因为目前,“mainproject”包有一个
\uuuu init\uuuuuuuuuupy
文件和几个实现东西的模块

创建一组模块化软件包的正确方法是什么,这样就有了一个主软件包,并且可以单独安装其他模块和子软件包

是否可以将附加模块和子包作为附加模块安装?因此,为了有选择地安装上述示例中的“sub4”子包,可以执行
pip install mainproject[sub4]

这都是关于Python3的,如果需要的话,需要Python3.6作为解决方案是没有问题的