使用Python OpenGL创建类时遇ModuleNotFoundError问题求助
解决ModuleNotFoundError: No module named 'block_model.py'的问题
嘿,我来帮你搞定这个导入错误,主要问题出在模块导入的方式上,还有几个代码细节需要调整:
1. 修正importlib.import_module的参数
importlib.import_module()接收的是模块名,不是带.py后缀的文件名。比如你的文件叫block_model.py,你应该传入'block_model'而不是'block_model.py'。
举个例子,如果你之前是这样调用Create类的:
Create(1, 1, 1, 'block_model.py')
赶紧改成:
Create(1, 1, 1, 'block_model')
2. 确保模块在Python的搜索路径里
要保证block_model.py和你的主脚本在同一个文件夹里;如果不在同目录,你可以在代码开头把模块所在目录添加到Python的搜索路径中:
import sys from pathlib import Path # 替换成block_model.py所在的实际路径 sys.path.append(str(Path(__file__).parent / "your_model_folder"))
3. 修复代码里的其他小问题
看你的代码片段,还有几个细节需要调整:
model.verticies()和model.edges()是方法调用,你后面赋值时漏了括号,应该写成verticies = model.verticies()、edges = model.edges()glEnd()不需要省略号,直接写glEnd()就行
修正后的代码片段参考:
import importlib from OpenGL.GL import * class Create: def __init__(self, cube_x, cube_y, cube_z, file): glBegin(GL_LINES) # 导入模块时使用不带.py的名称 model = importlib.import_module(file) # 调用方法获取顶点和边数据 verticies = model.verticies() edges = model.edges() for edge in edges: for vertex in edge: glVertex3fv(verticies[vertex]) glEnd()
额外检查点
- 确认
block_model.py里确实定义了verticies()和edges()函数,且没有语法错误 - 如果
block_model是一个文件夹形式的包,记得在文件夹里添加__init__.py文件(Python 3.3+可省略,但加上更稳妥)
内容的提问来源于stack exchange,提问作者hydos06
相关产品推荐
相关产品推荐

