Python:将库导入为变量

时间:2019-04-26 08:56:53

标签: python

class A():
    def __init__(self):
        install_package('abc')
        import abc
     def sq(self):
        print(abc.sqrt(5))

背景

我正在为使用python运行应用程序(我发送给他们)的客户编写帮助程序类(全部存储在helper.py中)。这些帮助程序类有助于应用程序功能。为了在客户端进行更快的部署,我编写了一个名为install_package的函数,该函数隐式调用pip install

所有客户端都收到相同的helper.py文件,但应用程序不同。我发送给他们的应用程序通常使用helper.py中的类的子集。

动机

所以我现在使用上述类结构的原因非常明显,我不想在helper.py的开头加载所有库,因为这些库将具有相应的install_package() 。因此,对于应用程序可能不会使用所有类的客户端,无需安装所有不必要的库

问题

现在的问题是,将上述结构用于A()似乎是一个可行的选择,但是我在__init__函数中导入的包无法全局导入,因此sq()无法使用abc库中的函数。解决此问题的最佳方法是什么?一种方法是将库存储在class本地的变量中。我将如何去做?也欢迎更改班级结构的建议!

1 个答案:

答案 0 :(得分:3)

那这样的事情呢?

import importlib

class A():
    def __init__(self):
        install_package('abc')
        self.abc = importlib.import_module('abc')
     def sq(self):
        print(self.abc.sqrt(5))