首页 > 解决方案 > Python:将库作为变量导入

问题描述

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

背景

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

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

动机

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

问题

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

标签: python

解决方案


像这样的东西怎么样:

import importlib

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

推荐阅读