使用direnv与devenv开发Python时OpenGL链接失败,导入报错求助
解决devenv中Python无法链接OpenGL的问题
以下是针对你遇到的None type object has no attribute eglGetCurrentContext错误的具体修复方案:
1. 补充环境变量,确保动态链接器能找到OpenGL库
devenv默认可能不会自动将Mesa的库路径加入动态链接器搜索范围,需要手动在配置中添加环境变量:
packages = [ pkgs.git pkgs.glfw pkgs.glm pkgs.lua pkgs.mesa pkgs.libcxx]; # 添加环境变量暴露OpenGL库路径 environment.variables = { LD_LIBRARY_PATH = "${pkgs.mesa}/lib"; # 如果是 macOS 系统,替换为下面这行 # DYLD_LIBRARY_PATH = "${pkgs.mesa}/lib"; }; languages.python = { enable = true; version = "3.12.7"; venv.enable = true; venv.requirements = ./requirements.txt; };
注:pkgs.libGL已经包含在pkgs.mesa中,无需单独添加,避免重复依赖导致冲突。
2. 确认Python依赖包的完整性
检查你的requirements.txt是否包含完整的OpenGL相关依赖:
PyOpenGL>=3.1.6 PyOpenGL-accelerate>=3.1.6
执行devenv shell后,venv会自动安装这些依赖,加速模块能帮助Python更好地绑定系统级OpenGL库。
3. 验证环境配置
进入devenv环境后,执行以下命令确认库路径是否正确加载:
echo $LD_LIBRARY_PATH # 检查输出是否包含mesa的lib目录,例如 /nix/store/xxx-mesa-xxx/lib ldconfig -p | grep libEGL # 确认能找到libEGL.so文件
如果以上步骤完成后仍有问题,可以尝试在devenv配置中添加pkgs.mesa.drivers包,它包含了完整的Mesa驱动组件,确保EGL相关库被正确安装。
内容的提问来源于stack exchange,提问作者Caped Bojji
相关产品推荐
相关产品推荐

