问题描述
出于某种原因,我不得不将模块名称从 A.py
更改为 0880ceae-8a46-11eb-bcf6-38f9d349be8e.py
。 0880ceae-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
扩展名。