You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:32:47