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

问题描述

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

更改后,我尝试通过以下两种方式从 class B 文件中导入 py,均无效。

第一种方案是直接导入

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。
  • 确保在 .py 模块中使用时不要包含 importlib 扩展名。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...