如何只导入模块的一部分并停止在Python中编译其他部分?

时间:2015-12-22 07:40:50

标签: python python-2.7

我的项目中有2个文件 -

**file1.py**
class A():
    # Some code...

class B():
    # Calling an API to get the data

另一个文件是 -

**file2.py**
from file1 import A
# Some code....

这里的问题是我只想导入类A,但是由于python的默认行为,它确实编译了在B类中编写的代码,这就是不需要调用API。

如何解决?

1 个答案:

答案 0 :(得分:2)

将该代码拆分为单独的模块,或重构类B,以便在导入时不调用API。

Python中不支持部分导入; import机制为您提供的唯一选项是加载整个文件

这意味着你必须自己加载文本文件,然后解析出你想要的部分,然后编译并执行这些部分。这充满了问题,因为您必须自己检测任何依赖关系,以便做出明智的决定,以便能够和不能省略。

如果您真的想要走这条路,那么您将要查看ast module以生成模块文件中包含的对象树。我使用对象上的行号来确定要编译的原始源文件的哪些部分(将树转换回字节码更难)。