meson-python: Unknown Python implementation: pyston (cannot install SciPy >= 1.9.0 on Pyston)

This is similar to #121, only it’s for the lesser-known (but awesome) Pyston.

NotImplementedError: Unknown Python implementation: pyston. Please report this to https://github.com/FFY00/mesonpy/issues and include information about the Python distribution you are using.

Could you add support for it?

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Reactions: 1
  • Comments: 47 (26 by maintainers)

Commits related to this issue

Most upvoted comments

it installs correctly, though I won’t test my app until tomorrow

on scipy 1.8.3 the pyston wheel was huge-- 80 MB for some reason. 1.9.3 is down to 24MB (smaller than CPython wheel)

Silly bug. Fixed. Can you please try again?

@rgommers can you please approve the CI tests run for #191?

I usually explicitly turn off build isolation:

# install the meson-python version you want to test, and other build dependencies
python -m build --no-isolation --skip-dependency-check

I’m not following what this thread is about but maybe this information about the Pyston PEP425 tag is helpful:

This was the Thread where we tried to get out own tag but ended up not getting/doing it: https://discuss.python.org/t/pep425-python-tag-for-pyston/13039 So if I remember correctly we did not end up changing the tag - just sticked to the default tag.

This was quite a long time ago so I can’t really remember so I took a quick look how the wheel filename gets calculated: The packaging package does all the work in this path packaging.tags.generic_tags(): https://github.com/pypa/packaging/blob/5f46d1532f45ae32cd7831c6f45212f7066c1ed0/packaging/tags.py#L254

The PEP425 tag comes down to: <interpreter>-<abi>-<platform> Where:

  • interpreter is pyston38: sys.implementation.name + sysconfig.get_config_var("py_version_nodot")
  • abi is pyston_23_x86_64_linux_gnu: sysconfig.get_config_var("SOABI").replace(".", "_").replace("-", "_")
  • platform is linux_x86_64: sysconfig.get_platform().replace(".", "_").replace("-", "_")

Or the other way around:

>>> from packaging.tags import parse_tag
>>> t = list(parse_tag("pyston38-pyston_23_x86_64_linux_gnu-linux_x86_64"))[0]
>>> t.interpreter
'pyston38'
>>> t.abi
'pyston_23_x86_64_linux_gnu'
>>> t.platform
'linux_x86_64'

Hope this helps