如何导入名称为 uid 的 python 模块?
How can I import a python module whose name is a uid?
出于某种原因,我不得不将模块名称从 A.py
更改为 0880ceae-8a46-11eb-bcf6-38f9d349be8e.py
。 0880ceae-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
扩展。
出于某种原因,我不得不将模块名称从 A.py
更改为 0880ceae-8a46-11eb-bcf6-38f9d349be8e.py
。 0880ceae-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
扩展。