Issues building from source on Ubuntu with Python 3.10.4
Expected behaviour
I need to build opencv-python from source on Ubuntu 22.04 with Python 3.10.4. However, I would like to override the default PYTHON3_NUMPY_INCLUDE_DIRS setting from something like /home/user/miniconda3/envs/py310/lib/python3.10/site-packages/numpy/core/include to /home/user/miniconda3/envs/py310/lib/python3.10/site-packages/numpy/core/include/numpy. Is there any way to achieve this, because otherwise the build fails as I encounter the following error fatal error: numpy/ndarrayobject.h: No such file or directory.
Actual behaviour
Already described above.
Steps to reproduce
- example code
- Change directory to
opencv-python. - Enable virtual Python environment and make sure
numpyandscikit-buildare installed. - Set environment variables using the following:
- Change directory to
export CMAKE_ARGS="-DWITH_CUDA=ON \
-DWITH_CUDNN=ON \
-DOPENCV_DNN_CUDA=ON \
-DWITH_CUBLAS=ON \
-DPYTHON3_EXECUTABLE=/home/user/miniconda3/envs/py310/bin/python \
-DPYTHON3_LIBRARY=/home/user/miniconda3/envs/py310/lib/libpython3.10.so \
-DPYTHON3_PACKAGES_PATH=/home/user/miniconda3/envs/py310/lib/python3.10/site-packages \
-DPYTHON_INCLUDE_DIR=/home/user/miniconda3/envs/py310/include/python3.10 \
-DPYTHON3_NUMPY_INCLUDE_DIRS=/home/user/miniconda3/envs/py310/lib/python3.10/site-packages/numpy/core/include/numpy \
-DCMAKE_VERBOSE_MAKEFILE=ON"
export ENABLE_CONTRIB=1
export VERBOSE=1
- Run:
pip wheel . --verbose
- operating system
- Ubuntu 22.04
- architecture (e.g. x86)
- x86_64
- opencv-python version
- 4.6.0.66
Issue submission checklist
- [x] This is not a generic OpenCV usage question (looking for help for coding, other usage questions, homework etc.)
- [x] I have read the README of this repository and understand that this repository provides only an automated build toolchain for OpenCV Python packages (there is no actual OpenCV code here)
- [x] The issue is related to the build scripts in this repository, to the pre-built binaries or is a feature request (such as "please enable this additional dependency")
- [x] I'm using the latest version of
opencv-python
I have just edited the Python3_NumPy_INCLUDE_DIRS option in the file opencv-python/_skbuild/linux-x86_64-3.10/cmake-build/CMakeCache.txt to use the desired path. Have started re-building the software again and see if the same error will crop up. Will report here once I have the results.
No luck, it seems that the edited value for the Python3_NumPy_INCLUDE_DIRS option in the opencv-python/_skbuild/linux-x86_64-3.10/cmake-build/CMakeCache.txt file got overwritten during the build, so cannot update manually this way.
@krisstern have you tried to relax the numpy version requirement in the pyproject.toml build requirements? https://github.com/opencv/opencv-python/blob/6b73d90fc3e50ba6858926d299b49f0228e19d68/pyproject.toml#L11
See https://github.com/opencv/opencv-python/issues/713