我目前编码的应用程序,它基本上是结构化的这种方式:
main.py
+包1
+ --- Class1.py
+ ---应用
+包2
+ --- Class1.py
+ ---应用
所以,我有两个问题:一是,两个包里面,有所有应用程序所需的模块,如:重。 有没有一种方法我可以导入模块为整个包一次,而不是在每一个需要它的文件导入?
而且,正如你所看到的,Class1的在两个包使用。 是否有两个包间共享,以避免重复代码的好办法?
我目前编码的应用程序,它基本上是结构化的这种方式:
main.py
+包1
+ --- Class1.py
+ ---应用
+包2
+ --- Class1.py
+ ---应用
所以,我有两个问题:一是,两个包里面,有所有应用程序所需的模块,如:重。 有没有一种方法我可以导入模块为整个包一次,而不是在每一个需要它的文件导入?
而且,正如你所看到的,Class1的在两个包使用。 是否有两个包间共享,以避免重复代码的好办法?
我会强烈建议反对这样做:通过分离从使用功能模块的进口,你使它更难以追踪模块之间的依赖关系。
如果你真的想,虽然这样做,其中一个方案是创建一个新的模块调用common_imports
(例如),并把它做你以后进口。
然后在你的其他模块,添加如下内容:
from common_imports import *
这应该给你从该模块(包括所有的进口)所有的公共名。
要回答你的第二个问题,如果你的命名两个模块Class1.py
其实都是一样的,那么你不应该把它复制到两个包。 把它放在一个包,将只包含的代码是常见的两种,然后再导入。 这是绝对没有必要复制文件,并尝试保持两个副本的每个变化。
Q1:
你必须找到一种方式来导入你的包,所以你有两个选择:
(请纠正我,如果我错了或不彻底)
1.看詹姆斯的解决方案,你需要定义一个类,把所有的模块里面,最后将其导入到你的子类
2.基本上没有导入到你的主类,而是仅导入一次,你的子类
例如:(A_1子内) import re
def functionThatUseRe(input): passimport re
def functionThatUseRe(input): pass
然后,你的主类中,只是try: from YourPackage import A_1 #windows except: import A_1 #MAC OSX
A_1.functionThatUseRe("")try: from YourPackage import A_1 #windows except: import A_1 #MAC OSX
A_1.functionThatUseRe("")
你完全避免导入模块多次
Q2:把你的class1.py在同一目录与主类,或将其移动到另一个文件夹,在包1(2).Apps
import Class1
开始使用代码从那里