Python 从以数字开头的模块导入类
我需要从一个以数字开头的python文件中导入一个类(而不是整个文件)。 有一个关于导入整个模块的主题,它是有效的,但我找不到解决这个问题的方法。 () 通常是:Python 从以数字开头的模块导入类,python,python-import,Python,Python Import,我需要从一个以数字开头的python文件中导入一个类(而不是整个文件)。 有一个关于导入整个模块的主题,它是有效的,但我找不到解决这个问题的方法。 () 通常是: from uni_class import Student 尽管文件名为123\u uni\u class 尝试了不同的 importlib.import_module("123_uni_class") 及 错误: from 123_uni_class import Student ^ Synta
from uni_class import Student
尽管文件名为123\u uni\u class
尝试了不同的
importlib.import_module("123_uni_class")
及
错误:
from 123_uni_class import Student
^
SyntaxError: invalid decimal literal
importlib.import\u module(“123\u uni\u class”)
导入模块后返回该模块,您必须为其指定一个有效名称才能重新使用该模块:
import importlib
my_uni_class = importlib.import_module("123_uni_class")
然后,您可以以“my_uni_class”的名称访问您的模块
如果123\u uni\u class
在此上下文中有效,则这相当于import 123\u uni\u class作为我的uni\u class
。它适用于我:
Python 3.6.8 (default, Feb 14 2019, 22:09:48)
[GCC 7.4.0] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import importlib
>>> importlib.import_module('123_a')
<module '123_a' from '/path/to/123_a.py'>
>>> __import__('123_a')
<module '123_a' from '/path/to/123_a.py'>
例如,这种通用技术用于读取用Python编写的配置文件等。但我不鼓励正常使用,建议您只使用有效的模块名。请粘贴完整的回溯。我不认为你会在这里得到一个语法错误,除非你在其他地方写了123大学班进口学生的那行
。一般来说,我认为你应该重命名你的模块。一般来说,没有很好的理由尝试这样做。好吧,这就是我所说的,我想这样做,但不能bcs的这个错误,所以,删除或重写这行。请看我的最新答案。
Python 3.6.8 (default, Feb 14 2019, 22:09:48)
[GCC 7.4.0] on cygwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import importlib
>>> importlib.import_module('123_a')
<module '123_a' from '/path/to/123_a.py'>
>>> __import__('123_a')
<module '123_a' from '/path/to/123_a.py'>
mod = {}
with open('123_uni_class.py') as fobj:
exec(fobj.read(), mod)
Student = mod['Student']