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



我的项目中有两个文件。

文件1.py

class A():
    # Some code...
class B():
    # Calling an API to get the data

另一个文件是:

文件2.py

from file1 import A
# Some code....

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

如何修复?

只需将代码拆分为单独的模块,或者重构类B,使其在导入时不调用API。

Python中不支持开箱即用的部分导入;CCD_ 2机制为您提供的唯一选项是仅加载整个文件

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

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

最新更新