为什么要更改python的';从…起导入..';行为取决于包中的脚本

为什么要更改python的';从…起导入..';行为取决于包中的脚本,python,python-2.7,python-import,Python,Python 2.7,Python Import,我正在编写我的第一个包,使用这个包,您可以通过“from[MyPackage]import*”导入它,这样您就不必编写[MyPackage]。每次都是。但是,此包包含子包,因此我所做的如下: __初始值 from subpackage1 import * from subpackage2 import * etc.. 这样,您只需执行一次“从[MyPackage]导入*”,就可以了。这是一个很好的解决方案,直到我决定让它至少能够单独导入子包。我认为创建一个名为allmodules的额外子包是个

我正在编写我的第一个包,使用这个包,您可以通过“from[MyPackage]import*”导入它,这样您就不必编写[MyPackage]。每次都是。但是,此包包含子包,因此我所做的如下:

__初始值

from subpackage1 import *
from subpackage2 import *
etc..
这样,您只需执行一次“从[MyPackage]导入*”,就可以了。这是一个很好的解决方案,直到我决定让它至少能够单独导入子包。我认为创建一个名为allmodules的额外子包是个好主意。通过这种方式,“从[MyPackage]导入所有模块”将获得相同的结果:

allmodules.py

from .subpackage1 import *
from .subpackage2 import *
etc..
然而,这似乎并没有发挥应有的作用,因为通过这样做,所有函数似乎都不再是可调用的。为什么这不起作用,该如何修复?
提前谢谢

来自MyPackage.allmodules import*
将执行您想要的操作。

来自x import*
并不是最好的做法,原因有几个。如果您想消除长调用,只需重命名主模块中的函数:
func1=MyPackage.func1
@thesounddefence,但我必须为每个函数都这样做,不是吗?是的,你会的。如果你有一大笔钱,这可能是不现实的。另一方面,如果您试图导入的模块中有变量,
from x import*
也不实用,因为变量的更改值不会在模块之间共享。@msw这是语法。除了模仿,没什么可学的。这其实很有道理,愚蠢的是我没有想到这一点。谢谢