如何将参数传递给导入

问题描述 投票:0回答:1

我有一个 Python 导入,它是旧版 Windows DLL 的包装器;导入声明了 DLL 中函数的许多接口函数/包装器(主要是为了处理数据类型差异)。

我希望能够从外部控制导入加载哪个 DLL;像这样的东西:

        if environment == 'release':
            mydll = ctypes.cdll.LoadLibrary('../DLL/x64/Release/scanner64.dll')
        elif environment == 'debug':
            mydll = ctypes.cdll.LoadLibrary('../DLL/x64/Debug/scanner64.dll')
        elif environment == 'local':
            mydll = ctypes.cdll.LoadLibrary('./Scanner64.dll')
        else:
            print("Valid environments are release, debug, and local")
            exit()
   

我尝试在我的主 Python 脚本中将“环境”声明为全局,但这不起作用。我还尝试将导入的大部分内容放入 init() 函数中,但这也不起作用(因为函数 defs 的范围在 init 函数内 - 对导入脚本不可见。

python python-import
1个回答
0
投票

将所有逻辑都放在函数中,您可以延迟加载直到需要时

# library

mydll = None

def load(environment="local"):
    global mydll
    if environment == 'release':
        mydll = ctypes.cdll.LoadLibrary('../DLL/x64/Release/scanner64.dll')
    elif environment == 'debug':
        mydll = ctypes.cdll.LoadLibrary('../DLL/x64/Debug/scanner64.dll')
    elif environment == 'local':
        mydll = ctypes.cdll.LoadLibrary('./Scanner64.dll')
    else:
        raise RuntimeError("Valid environments are release, debug, and local")

# rest of the logic

现在导入函数时,只需加载它即可

import mylibrary
mylibrary.load(environment)
© www.soinside.com 2019 - 2024. All rights reserved.