ethereum / consensus-specs

Ethereum Proof-of-Stake Consensus Specifications
Creative Commons Zero v1.0 Universal
3.54k stars 962 forks source link

Error running `make test`: PyO3 modules may only be initialized once #3936

Open jtraglia opened 1 week ago

jtraglia commented 1 week ago

When running make test I get the following error:

ImportError while loading conftest '<path>/consensus-specs/tests/core/pyspec/eth2spec/test/conftest.py'.
eth2spec/test/conftest.py:1: in <module>
    from eth2spec.test import context
eth2spec/test/context.py:6: in <module>
    from eth2spec.utils import bls
eth2spec/utils/bls.py:24: in <module>
    from py_arkworks_bls12381 import (
../../../venv/lib/python3.12/site-packages/py_arkworks_bls12381/__init__.py:1: in <module>
    from .py_arkworks_bls12381 import *
E   ImportError: PyO3 modules may only be initialized once per interpreter process
make: *** [test] Error 4

To no alas, I spent a little time trying to fix this. Doesn't seem like it will be a simple fix. I moved bls_active into a separate file, but then the whisk spec imports curdleproofs which imports py_arkworks. Not sure what to do here.