Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PYBIND11_FINDPYTHON=ON #1684

Merged
merged 1 commit into from
Oct 11, 2024
Merged

PYBIND11_FINDPYTHON=ON #1684

merged 1 commit into from
Oct 11, 2024

Conversation

ax3l
Copy link
Member

@ax3l ax3l commented Oct 11, 2024

@franzpoeschel
Copy link
Contributor

franzpoeschel commented Oct 11, 2024

Should we add this logic to our superbuilds in CMake? Set PYTHON_EXECUTABLE before adding pybind11 if it is not yet set?

@ax3l
Copy link
Member Author

ax3l commented Oct 11, 2024

Possibly, yes!

We should set the executable that was found here:
https://github.com/openPMD/openPMD-api/blob/0.16.0/cmake/dependencies/pybind11.cmake#L80-L86

So a simple

set(PYTHON_EXECUTABLE ${Python_EXECUTABLE})

might make it already more robust.

@ax3l ax3l changed the title setup.py: Hint pybind11 FindPythonLibsNew PYBIND11_FINDPYTHON=ON Oct 11, 2024
@ax3l
Copy link
Member Author

ax3l commented Oct 11, 2024

Ok, so if we set PYBIND11_FINDPYTHON=ON
https://pybind11.readthedocs.io/en/stable/compiling.html#modules-with-cmake

Then pybind11 will call find_package(Python ...) again, which will see that we already called it (default find_package behavior), use our cached results and rely on the new logic
https://github.com/pybind/pybind11/blob/v2.13.6/tools/pybind11Common.cmake#L215-L223

Well, not obvious from the docs, but ok.

@ax3l
Copy link
Member Author

ax3l commented Oct 11, 2024

MSVC: calling setup.py with a python 3.9 now finds newest on the system first (outside of setup-python, venv and conda envs):

# python3.exe is c:\hostedtoolcache\windows\python\3.9.13\x64\python3.exe
$ python3.exe -m pip wheel -v .
...
  -- Found Python: C:/hostedtoolcache/windows/Python/3.12.7/x64/python3.exe (found suitable version "3.12.7", minimum required is "3.7.0") found components: Interpreter Development.Module
...

Which hints do we want to set in setup.py to make sure the calling Python process is exactly the Python that is used? (Note: Python_EXECUTABLE is an overwritable output, not an input. Setting it can still mismatch libs, etc.)

MSVC: NumPy requires newer Python:

  Link requires a different Python (3.9.13 not in: '>=3.10'): https://files.pythonhosted.org/packages/d1/0f/8d2b5ebb01dc49d20ae0a282d6baff7202b7bf0df8acdd4a6abeffe98070/numpy-2.1.0rc1.tar.gz (from https://pypi.org/simple/numpy/) (requires-python:>=3.10)

@ax3l ax3l force-pushed the fix-pybind11-python branch 2 times, most recently from de3b2a5 to 7c0972a Compare October 11, 2024 18:36
@ax3l
Copy link
Member Author

ax3l commented Oct 11, 2024

@ax3l ax3l mentioned this pull request Oct 11, 2024
2 tasks
@ax3l
Copy link
Member Author

ax3l commented Oct 11, 2024

Ok, that should do the trick :)

@ax3l
Copy link
Member Author

ax3l commented Oct 11, 2024

@ax3l ax3l merged commit 93df9d5 into openPMD:dev Oct 11, 2024
31 checks passed
@ax3l ax3l deleted the fix-pybind11-python branch October 11, 2024 21:05
franzpoeschel added a commit to franzpoeschel/openPMD-api that referenced this pull request Nov 12, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants