opencv-python icon indicating copy to clipboard operation
opencv-python copied to clipboard

Issues building from source on Ubuntu with Python 3.10.4

Open krisstern opened this issue 3 years ago • 3 comments

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
    1. Change directory to opencv-python.
    2. Enable virtual Python environment and make sure numpy and scikit-build are installed.
    3. Set environment variables using the following:
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
  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

krisstern avatar Aug 24 '22 06:08 krisstern

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.

krisstern avatar Aug 24 '22 09:08 krisstern

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 avatar Aug 25 '22 03:08 krisstern

@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

bertsky avatar Apr 26 '23 09:04 bertsky