Traceback (most recent call last):
File "<internal>", line 1
ModuleNotFoundError: No module named 'objc'
Traceback (most recent call last):
File "macro panel", line 4
NameError: name 'GSGlyphInfo' is not defined
When I try to run the code I have to add entries to an EditGlyphData GlyphData.xml file I receive this error.
The error No module named "objc"
indicates that something is wrong with your Python installation. What version do you have installed under Preferences > Addons? You need the Python version that has (Glyphs) after the version number.
Check that you have all modules installed as well.
Running which python3.11 only shows the 3.11.6 Homebrew install and not the 3.11.9 Glyphs install. I have not been able to figure out how to install pyobjc to the Glyphs install.
The glyphs python is only usable from within Glyphs. Everywhere else you need to use the version that is installed in the system.
You can run pip from a script. Try this in the macro window of EditGlyphData:
from pip._internal.cli.main import main as pip_main
pip_main(["install", "pyobjc"])
Traceback (most recent call last):
File "<internal>", line 1
ModuleNotFoundError: No module named 'objc'
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try brew install
xyz, where xyz is the package you are trying to
install.
If you wish to install a Python library that isn't in Homebrew,
use a virtual environment:
python3 -m venv path/to/venv
source path/to/venv/bin/activate
python3 -m pip install xyz
If you wish to install a Python application that isn't in Homebrew,
it may be easiest to use 'pipx install xyz', which will manage a
virtual environment for you. You can install pipx with
brew install pipx
You may restore the old behavior of pip by passing
the '--break-system-packages' flag to pip, or by adding
'break-system-packages = true' to your pip.conf file. The latter
will permanently disable this error.
If you disable this error, we STRONGLY recommend that you additionally
pass the '--user' flag to pip, or set 'user = true' in your pip.conf
file. Failure to do this can result in a broken Homebrew installation.
Read more about this behavior here: <https://peps.python.org/pep-0668/>
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
I use the python from python.org. And I even have multiple versions installed. And that works well for me. Maybe the version from home-brew is missing some pieces?