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
本地的变量中。我将如何去做?也欢迎更改班级结构的建议!
答案 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))