gpt4 book ai didi

python - 如何在 Python 3 中执行动态相对导入?

转载 作者:太空宇宙 更新时间:2023-11-03 14:02:30 24 4
gpt4 key购买 nike

我有以下文件结构:

mymodule/
__init__.py
mylib.py
test.py

文件mymodule/__init__.py:

# mymodule/__init__.py
def call_me():
module = __import__('.mylib')
module.my_func()

文件 mymodule/mylib.py:

# mymodule/mylib.py
def my_func():
print("hi!")

文件test.py:

# test.py
from mymodule import call_me
call_me()

如果我运行 python3 test.py,它会失败并显示错误:

    module = __import__('.mylib')
ImportError: No module named '.mylib'

我想在 call_me 中执行一个相对导入,相当于静态导入 from 。导入 mylib。我该怎么做?

最佳答案

使用 importlib.import_module 并在 __init__.py 中指定来自 __name__ 的包:

importlib.import_module(name, package=None) Import a module.

The 'package' argument is required when performing a relative import. It specifies the package to use as the anchor point from which to resolve the relative import to an absolute import.

例子:

import importlib

def call_me():
module = importlib.import_module('.mylib', package=__name__)
module.my_func()

关于python - 如何在 Python 3 中执行动态相对导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47529097/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com