的Python:进口模块,一次一整包(Python : import module once for

2019-08-17 06:07发布

我目前编码的应用程序,它基本上是结构化的这种方式:

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

所以,我有两个问题:一是,两个包里面,有所有应用程序所需的模块,如:重。 有没有一种方法我可以导入模块为整个包一次,而不是在每一个需要它的文件导入?

而且,正如你所看到的,Class1的在两个包使用。 是否有两个包间共享,以避免重复代码的好办法?

Answer 1:

我会强烈建议反对这样做:通过分离从使用功能模块的进口,你使它更难以追踪模块之间的依赖关系。

如果你真的想,虽然这样做,其中一个方案是创建一个新的模块调用common_imports (例如),并把它做你以后进口。

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

from common_imports import *

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



Answer 2:

要回答你的第二个问题,如果你的命名两个模块Class1.py其实都是一样的,那么你不应该把它复制到两个包。 把它放在一个包,将只包含的代码是常见的两种,然后再导入。 这是绝对没有必要复制文件,并尝试保持两个副本的每个变化。



Answer 3:

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

1.看詹姆斯的解决方案,你需要定义一个类,把所有的模块里面,最后将其导入到你的子类

2.基本上没有导入到你的主类,而是仅导入一次,你的子类

例如:(A_1子内) import re
def functionThatUseRe(input): pass
import 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

开始使用代码从那里



文章来源: Python : import module once for a whole package