I am relatively new to installing python libraries/modules in OSX, and I believe I have made some error, as Glyphs seems to be upset now.
I was trying to install a library called pywebview, which I believe may have inadvertently messed with the installation of pyobjc? But I can’t be sure.
When I installed plugins that are in the plugin manager, for instance, Glyphs is throwing errors on boot, into the python output window.
———————
For instance with Word-O-Mat installed, upon starting Glyphs I see the error:
Traceback (most recent call last):
File "main.py", line 10, in <module>
_run('plugin.py')
File "main.py", line 8, in _run
execfile(path, globals(), globals())
File "plugin.py", line 17, in <module>
from GlyphsApp.plugins import *
File "GlyphsApp/GlyphsApp/plugins.py", line 141, in <module>
TypeError: Error when calling the metaclass bases
First argument is not an 'objc.informal_protocol' but 'objc.formal_protocol'
———————
Additionally, when I try to write scripts that use the Glyphs.addCallback call from the API, the app crashes. For instance I was adding a callback for DOCUMENTWASSAVED, and upon saving my Glyphs file, the app crashes to desktop instantaneously.
Any idea why this is happening, and what I can do to resolve it?
If you think your pyobjc is broken, you can just try reinstall it
Try: pip install --upgrade pyobjc
Optionally, first uninstall it: pip uninstall pyobjc
(You might need to use the --user flag for the install, after --upgrade, if it does not let you install without)
You also might want to consider using a separate python environment for your other development endeavors, to avoid conflicts. Use, for example, virtualenv for that.
Thanks for the recommendation! I was able to make sure pyobjc was upgraded per your instructions, but this doesn’t seem to have solved the issue I’m having. I still see the same error messages within the glyphs macro output window.
I wonder if anyone can shed any light on this informal vs formal objc protocol error?
You might try to remove all custom PyObjC versions as the one from the system should work. The problem you are having was fixed in the code of pyobjc after I reported it a few weeks ago. But the version that comes with macOS shouldn’t have that problem. What version of MacOS do you have?
<module 'objc' from '/Users/(myusername)/Library/Python/2.7/lib/python/site-packages/objc/__init__.pyc'>
I tried navigating to that path in the finder and then deleting that objc folder.
Now I am receiving this error when I run the same macro you provided:
Traceback (most recent call last):
File "<macro>", line 4, in <module>
File "__init__.py", line 9, in <module>
import Foundation
File "__init__.py", line 9, in <module>
import CoreFoundation
File "__init__.py", line 10, in <module>
from CoreFoundation import _metadata
ImportError: cannot import name _metadata
<module 'objc' from '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC/objc/__init__.pyc'>
I see a large list of folders, presumably all associated with the pywebview install from last night (which seems to have jointly installed all this extra pyobjc stuff I was unaware of).
Should anything installed at that time be erased?
They all have approximately the same time stamp, within a minute or so of each other, when this all began last night.
Removing these folders seems to have resolved the issue. Thank you very much Georg! I will learn more about virtual environments and avoid this in the future.