3

我目前正在编写一个基本上以这种方式构建的应用程序:

main.py
+ Package1
+--- Class1.py
+--- Apps
+ Package2 +
--- Class1.py
+--- Apps

所以我有两个问题:首先,在两个包中,都有所有应用程序需要的模块,例如:re. 有没有一种方法可以一次为整个包导入一个模块,而不是在每个需要它的文件中导入它?

而且,如您所见,两个包中都使用了 Class1。有没有在两个包之间共享它以避免代码重复的好方法?

4

3 回答 3

5

我强烈建议不要这样做:通过将导入与使用该功能的模块分开,您会更难以跟踪模块之间的依赖关系。

但是,如果您真的想这样做,一种选择是创建一个名为common_imports(例如)的新模块并让它执行您所追求的导入。

然后在您的其他模块中,添加以下内容:

from common_imports import *

这应该为您提供该模块的所有公共名称(包括所有导入)。

于 2013-03-02T13:13:28.040 回答
0

要回答您的第二个问题,如果您命名的两个模块Class1.py实际上是相同的,那么您不应该将它复制到两个包中。将它放在一个包中,该包只包含两者共有的代码,然后导入它。绝对没有必要复制文件并尝试在两个副本中维护每个更改。

于 2013-03-02T21:36:03.860 回答
0

Q1:
必须找到一种方法来导入您的包,因此您有两个选择:(
如果我错了或不彻底,请纠正我)

1.看詹姆斯的解决方案,您需要定义一个类,将所有模块内部,最后将它们导入您的子类

2. 基本上什么都不导入到您的主类中,而是只导入一次到您的子类

例如:(在 A_1 子类中) 然后在 您 的主类中,只需执行 完全避免多次导入模块 Q2:将您的 class1.py 与主类放在同一目录中,或将其移动到 Package1(&2).Apps 中的另一个文件夹 import re
def functionThatUseRe(input): pass

try: from YourPackage import A_1 #windows except: import A_1 #MAC OSX
A_1.functionThatUseRe("")



import Class1

从那里开始使用代码

于 2018-04-27T01:13:20.797 回答