2013-03-02 27 views
3

目前我编码的应用程序,它基本上是结构化的这样:的Python:进口模块,一次一整包

main.py
+包1
+ --- Class1.py
+ - - 应用
+包2
+ --- Class1.py
+ ---应用

所以我有两个问题:一是 ,两个包里面,有模块NE由所有应用程序提供,例如:re。有没有办法可以一次导入整个程序包的模块,而不是将其导入每个需要它的文件?

而且,正如您所看到的,两个包中都使用了Class1。是否有一种很好的方法可以在两个包之间共享它以避免代码重复?

+0

对第一个问题的简短回答:没有。 – 2013-03-02 13:03:13

+0

您*必须*定义模块中的变量,因此您必须导入所有需要的模块。另外,请记住,其他人可能会读取您的代码,并会看到这个'Apps'变量没有定义,并且不会理解它来自哪里;所以这是一个糟糕的想法。 – Bakuriu 2013-03-02 13:05:32

回答

3

我强烈建议不要这么做:通过从使用该功能的模块中分离导入,使得跟踪模块之间的依赖关系变得更加困难。

如果你真的想要这样做,一个选择是创建一个名为common_imports的新模块(例如),并让它执行你之后的导入。

然后在你的其他模块,添加如下内容:

from common_imports import * 

这应该给你从该模块(包括所有的进口)所有的公共名。

0

要回答第二个问题,如果您的两个名为Class1.py的模块实际上是相同的,则不应将其复制到两个包中。将它放在只包含两个通用代码的包中,然后导入它。这是绝对而不是复制文件,并尝试维护两个副本中的每个更改。