如何导入名称为 uid 的 python 模块?

How can I import a python module whose name is a uid?

出于某种原因,我不得不将模块名称从 A.py 更改为 0880ceae-8a46-11eb-bcf6-38f9d349be8e.py0880ceae-8a46-11eb-bcf6-38f9d349be8e.py是由uuid.uuid1()生成的uid。

在我修改后,我尝试通过以下两种方式从py文件中导入一个class B,但都不行。

第一种方案是直接导入

from 0880ceae-8a46-11eb-bcf6-38f9d349be8e import B

有错误SyntaxError: invalid token

第二种解决方案是在导入之前定义一个变量

uid = '0880ceae-8a46-11eb-bcf6-38f9d349be8e'
from uid import Model_API

它有错误 ModuleNotFoundError: No module named 'uid'

有人有好主意吗?谢谢。

以下是使用 python3 测试过的问题的可能解决方案:


# Modern approach
import importlib
module = importlib.import_module(".", "0880ceae-8a46-11eb-bcf6-38f9d349be8e")
module.hello()

# Deprecated way
module = __import__("0880ceae-8a46-11eb-bcf6-38f9d349be8e")
module.hello()

以上两种方法都经过测试并且有效。

请牢记以下规则:

  • 检查您的文件名应以 .py 扩展名结尾,.py.py 将导致 ModuleNotFoundError。
  • 确保在 importlib 模块中使用时不包含 .py 扩展。