Hi Satish, That worked!
I had already tried no-build-isolation after installing numpy and cython== 3.0.12 but pip immediately crashed and I couldn’t figure out the problem. I see now that I was missing wheel. Thank you! Best, Samar > On Aug 30, 2025, at 12:24 AM, Satish Balay <[email protected]> wrote: > > > Ah - looks like the option to use is: --no-build-isolation (if the build > requirements are already installed) > > Satish > > ---------- > balay@pj02:~/petsc$ python -m pip install --user wheel numpy setuptools > cython==3.0.12 > Collecting wheel > Downloading wheel-0.45.1-py3-none-any.whl.metadata (2.3 kB) > Requirement already satisfied: numpy in /usr/lib64/python3.12/site-packages > (1.26.4) > Requirement already satisfied: setuptools in > /usr/lib/python3.12/site-packages (69.0.3) > Collecting cython==3.0.12 > Downloading > Cython-3.0.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata > (3.3 kB) > Downloading > Cython-3.0.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (3.5 > MB) > ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.5/3.5 MB 6.3 MB/s eta 0:00:00 > Downloading wheel-0.45.1-py3-none-any.whl (72 kB) > ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 72.5/72.5 kB 4.1 MB/s eta 0:00:00 > Installing collected packages: wheel, cython > Successfully installed cython-3.0.12 wheel-0.45.1 > balay@pj02:~/petsc$ PETSC_DIR=/home/balay/petsc PETSC_ARCH=arch-linux-c-debug > python -m pip install --verbose --no-build-isolation src/binding/petsc4py > Using pip 23.3.2 from /usr/lib/python3.12/site-packages/pip (python 3.12) > Defaulting to user installation because normal site-packages is not writeable > Processing ./src/binding/petsc4py > Running command Preparing metadata (pyproject.toml) > <snip> > Preparing metadata (pyproject.toml) ... done > Requirement already satisfied: numpy<2 in /usr/lib64/python3.12/site-packages > (from petsc4py==3.21.6) (1.26.4) > Building wheels for collected packages: petsc4py > Running command Building wheel for petsc4py (pyproject.toml) > running bdist_wheel > running build > running build_src > using Cython 3.0.12 > cythonizing 'petsc4py/PETSc.pyx' -> 'petsc4py/PETSc.c' > <snip> > Building wheel for petsc4py (pyproject.toml) ... done > Created wheel for petsc4py: > filename=petsc4py-3.21.6-cp312-cp312-linux_x86_64.whl size=11288013 > sha256=72be29eb718c43875e423ba22dbbcd0fd33a078c042a89373ae67a6bf886abd0 > Stored in directory: > /tmp/pip-ephem-wheel-cache-yhfxq7hs/wheels/ab/ca/ed/9a2ee0271ce3654f467915ae1f28d46ace120416127b0c8cf1 > Successfully built petsc4py > Installing collected packages: petsc4py > Successfully installed petsc4py-3.21.6 > balay@pj02:~/petsc$ python -m pip list --user > Package Version > -------- ------- > Cython 3.0.12 > petsc4py 3.21.6 > wheel 0.45.1 > balay@pj02:~/petsc$ > > > On Fri, 29 Aug 2025, Satish Balay wrote: > >> For older release - looks like its best to download the petsc4py source >> tarball, modify pyproject.toml [as below] - and then install it (with the >> suggested 'pip' command). >> >> Newer petsc/petsc4py versions have fixes that work with cython-3.1 >> >> Satish >> >> On Fri, 29 Aug 2025, Samar Khatiwala via petsc-dev wrote: >> >>> Hi Satish, >>> >>> Thanks for taking the time to help debug this. That you ran into the same >>> issue is reassuring in a way (that I wasn’t doing something silly). Sounds >>> like there’s not much to be done about it but hopefully this only affects a >>> few older versions of petsc4py. >>> >>> It is bizarre that pip is not accepting that 3.0.12 satisfies the >>> requirement. I thought I found a clever way to override what is in >>> pyproject.toml by specifying “cython==3.0.12” in a constraints.txt file >>> with the -c option. But pip ignored that too and proceeded to download >>> cython 3.1.3. >>> >>> As for re-downloading packages (cython, numpy) even when they’re already >>> installed is I think by pip’s design because these are build-time >>> requirements (and not runtime requirements). >>> >>> Thanks, >>> >>> Samar >>> >>>> On Aug 29, 2025, at 1:51 AM, Satish Balay <[email protected]> wrote: >>>> >>>> On Thu, 28 Aug 2025, Satish Balay wrote: >>>> >>>>> >>>>> Likely: >>>>> >>>>> pip install -v cython=3.0.12 petsc4py==3.21.1 >>>> >>>> https://urldefense.us/v3/__https://petsc.org/release/petsc4py/install.html__;!!G_uCfscf7eWS!ccM-EknCNavnpHXV7-_uoEddj8ar6876_brlmFbYTOL8M-IaAH5Y_NIbolpNF7JlYXLunOXzURWtoLI0czE1HjrvaZuc3x0XTwfBaw$ >>>> >>>> >>>> suggests: >>>> >>>> $ python -m pip install src/binding/petsc4py >>>> >>>> However: >>>>>>>> >>>> balay@pj02:~/petsc$ which cython >>>> ~/.local/bin/cython >>>> balay@pj02:~/petsc$ cython --version >>>> Cython version 3.0.12 >>>> balay@pj02:~/petsc$ >>>> balay@pj02:~/petsc$ PETSC_DIR=/home/balay/petsc >>>> PETSC_ARCH=arch-linux-c-debug python -m pip install --verbose >>>> src/binding/petsc4py >>>> Using pip 23.3.2 from /usr/lib/python3.12/site-packages/pip (python 3.12) >>>> Defaulting to user installation because normal site-packages is not >>>> writeable >>>> Processing ./src/binding/petsc4py >>>> Running command pip subprocess to install build dependencies >>>> Collecting cython>=3 >>>> Downloading >>>> cython-3.1.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.metadata >>>> (4.7 kB) >>>> Collecting numpy >>>> Downloading >>>> numpy-2.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata >>>> (62 kB) >>>> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.1/62.1 kB 2.1 MB/s eta >>>> 0:00:00 >>>> Collecting setuptools >>>> Downloading setuptools-80.9.0-py3-none-any.whl.metadata (6.6 kB) >>>> Downloading >>>> cython-3.1.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl >>>> (3.3 MB) >>>> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.3/3.3 MB 8.3 MB/s eta 0:00:00 >>>> Downloading >>>> numpy-2.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl >>>> (16.6 MB) >>>> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.6/16.6 MB 8.0 MB/s eta >>>> 0:00:00 >>>> Downloading setuptools-80.9.0-py3-none-any.whl (1.2 MB) >>>> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 8.9 MB/s eta 0:00:00 >>>> Installing collected packages: setuptools, numpy, cython >>>> Successfully installed cython-3.1.3 numpy-2.3.2 setuptools-80.9.0 >>>> .... >>>> <<<< >>>> >>>> I'm not sure why `3.0.12` is not satisfying the `cython>=3` requirement - >>>> and `cython-3.1.3` is installed for this requirement >>>> >>>> Ok - try to force 3.0.12: >>>>>>> >>>> balay@pj02:~/petsc$ git diff >>>> diff --git a/src/binding/petsc4py/pyproject.toml >>>> b/src/binding/petsc4py/pyproject.toml >>>> index 6987c0389ed..35b08945f2a 100644 >>>> --- a/src/binding/petsc4py/pyproject.toml >>>> +++ b/src/binding/petsc4py/pyproject.toml >>>> @@ -1,6 +1,6 @@ >>>> [build-system] >>>> requires = [ >>>> - "cython >= 3", >>>> + "cython == 3.0.12", >>>> "numpy", >>>> "setuptools", >>>> ] >>>> balay@pj02:~/petsc$ PETSC_DIR=/home/balay/petsc >>>> PETSC_ARCH=arch-linux-c-debug python -m pip install --verbose >>>> src/binding/petsc4py >>>> Using pip 23.3.2 from /usr/lib/python3.12/site-packages/pip (python 3.12) >>>> Defaulting to user installation because normal site-packages is not >>>> writeable >>>> Processing ./src/binding/petsc4py >>>> Running command pip subprocess to install build dependencies >>>> Collecting cython==3.0.12 >>>> Downloading >>>> Cython-3.0.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata >>>> (3.3 kB) >>>> Collecting numpy >>>> Downloading >>>> numpy-2.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata >>>> (62 kB) >>>> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 62.1/62.1 kB 1.9 MB/s eta >>>> 0:00:00 >>>> Collecting setuptools >>>> Downloading setuptools-80.9.0-py3-none-any.whl.metadata (6.6 kB) >>>> Downloading >>>> Cython-3.0.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl >>>> (3.5 MB) >>>> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.5/3.5 MB 41.4 MB/s eta >>>> 0:00:00 >>>> Downloading >>>> numpy-2.3.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl >>>> (16.6 MB) >>>> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.6/16.6 MB 4.9 MB/s eta >>>> 0:00:00 >>>> Downloading setuptools-80.9.0-py3-none-any.whl (1.2 MB) >>>> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 5.2 MB/s eta 0:00:00 >>>> Installing collected packages: setuptools, numpy, cython >>>> Successfully installed cython-3.0.12 numpy-2.3.2 setuptools-80.9.0 >>>> ... >>>> ... >>>> Building wheel for petsc4py (pyproject.toml) ... done >>>> Created wheel for petsc4py: >>>> filename=petsc4py-3.21.6-cp312-cp312-linux_x86_64.whl size=11282654 >>>> sha256=462b32dc3706d841a0fca5c7e9ba7b6127b0633cd943eef3784dc8f956375c1b >>>> Stored in directory: >>>> /tmp/pip-ephem-wheel-cache-du9_e3hc/wheels/ab/ca/ed/9a2ee0271ce3654f467915ae1f28d46ace120416127b0c8cf1 >>>> Successfully built petsc4py >>>> Installing collected packages: petsc4py >>>> Successfully installed petsc4py-3.21.6 >>>> balay@pj02:~/petsc$ pip list --user >>>> Package Version >>>> -------- ------- >>>> Cython 3.0.12 >>>> petsc4py 3.21.6 >>>> balay@pj02:~/petsc$ git branch >>>> * release-3.21 >>>> balay@pj02:~/petsc$ >>>>>>>> >>>> >>>> Ok - now 3.0.12 is getting used (the local install is skipped again - and >>>> a new pkg is downloaded/installed as part of the build?) , and the build >>>> is now successful >>>> >>>> Satish >>> >>
