[MacPorts] #71926: py-opengl: OpenGL.error.Error: Attempt to retrieve context when no valid context (was: OpenGL.error.Error: Attempt to retrieve context when no valid context)
MacPorts
noreply at macports.org
Fri Jan 24 11:37:56 UTC 2025
#71926: py-opengl: OpenGL.error.Error: Attempt to retrieve context when no valid
context
------------------------+----------------------
Reporter: krotalias | Owner: jmroot
Type: defect | Status: assigned
Priority: Normal | Milestone:
Component: ports | Version: 2.10.5
Resolution: | Keywords:
Port: py-opengl |
------------------------+----------------------
Changes (by ryandesign):
* status: new => assigned
* cc: jmroot (removed)
* keywords: opengl, freeglut, python =>
* owner: (none) => jmroot
Old description:
> Python opengl used to work with freeglut. However, now there is a problem
> getting the context. Editing
>
> /opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10
> /site-packages/OpenGL/platform/ctypesloader.py
>
> and replacing
>
> fullName = util.find_library( name ) for
>
> fullName = "/System/Library/Frameworks/{}.framework/{}".format(name,name)
>
> as discussed here --
> https://github.com/PixarAnimationStudios/OpenUSD/issues/1372 -- fixes the
> problem.
>
> The monkeypatch_ctypes approach also works, and one must import it before
> opengl in any code using pyopengl:
>
> # https://github.com/PixarAnimationStudios/OpenUSD/issues/1372
>
> #
> /opt/local/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12
> /site-packages/OpenGL/platform/ctypesloader.py
>
> def monkeypatch_ctypes():
> import os
> import ctypes.util
> uname = os.uname()
> if uname.sysname == "Darwin" and uname.release >= "20.":
> real_find_library = ctypes.util.find_library
> def find_library(name):
> if name in {"OpenGL", "GLUT"}: # add more names here if
> necessary
> return
> f"/System/Library/Frameworks/{name}.framework/{name}"
> return real_find_library(name)
> ctypes.util.find_library = find_library
> return
>
> monkeypatch_ctypes()
>
> --------------------------------
>
> The version of the python used is irrelevant. The bug also appears for
> python 3.13
> I tested on macos Catalina and Monterey, because I do not have access to
> a newer Mac.
>
> Thank you.
New description:
Python opengl used to work with freeglut. However, now there is a problem
getting the context. Editing
/opt/local/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10
/site-packages/OpenGL/platform/ctypesloader.py
and replacing
`fullName = util.find_library( name )` for
`fullName =
"/System/Library/Frameworks/{}.framework/{}".format(name,name)`
as discussed here --
https://github.com/PixarAnimationStudios/OpenUSD/issues/1372 -- fixes the
problem.
The monkeypatch_ctypes approach also works, and one must import it before
opengl in any code using pyopengl:
# https://github.com/PixarAnimationStudios/OpenUSD/issues/1372
#
/opt/local/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12
/site-packages/OpenGL/platform/ctypesloader.py
{{{
def monkeypatch_ctypes():
import os
import ctypes.util
uname = os.uname()
if uname.sysname == "Darwin" and uname.release >= "20.":
real_find_library = ctypes.util.find_library
def find_library(name):
if name in {"OpenGL", "GLUT"}: # add more names here if
necessary
return
f"/System/Library/Frameworks/{name}.framework/{name}"
return real_find_library(name)
ctypes.util.find_library = find_library
return
monkeypatch_ctypes()
}}}
--------------------------------
The version of the python used is irrelevant. The bug also appears for
python 3.13
I tested on macos Catalina and Monterey, because I do not have access to a
newer Mac.
Thank you.
--
--
Ticket URL: <https://trac.macports.org/ticket/71926#comment:1>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list