为pypy3编译opencv-python [英] Compile opencv-python for pypy3

查看:478
本文介绍了为pypy3编译opencv-python的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用 pypy 以获得更好的Python性能.我在Ubuntu 18.04上通过snap安装了pypy.我现在可以在virtualenv中使用pypy(实际上,我正在使用pipenv)

I want to use pypy for better Python performance. I installed pypy via snap on Ubuntu 18.04. I am now able to use pypy in virtualenv (Actually pipenv is what I'm using)

尝试通过git repo在virtualenv中为pypy3编译opencv-python:

Trying to compile opencv-python for pypy3 in a virtualenv from git repo by:

git clone https://github.com/skvark/opencv-python.git
python setup.py install

并获得:

Exception: Not found: 'python/cv2[^/]*\.pypy36\-pp73\-x86_64\-linux\-gnu\.so'

我发现了此帖子,它表明:

pyenv virtualenv pypy3.7.2.0 cv_env
mkdir cv_env
pyenv local cv_env
pip install numpy
git clone https://github.com/skvark/opencv-python
cd opencv-python
CMAKE_ARGS="-D PYTHON3_LIBRARY=~/.pyenv/versions/pypy3.6-7.2.0/lib/libpypy-c.so" python setup.py bdist_wheel
pip install dist/**.wheel

所以我克隆了仓库并尝试运行:

So I cloned the repo and tried to run:

CMAKE_ARGS="-D PYTHON3_LIBRARY=/snap/pypy3/50/bin/libpypy3-c.so" python setup.py bdist_wheel

我得到:

CMake Error: The source directory "/home/user/Projects/project1_pypy/pypy/opencv-python/_skbuild/linux-x86_64-3.6/cmake-build/PYTHON3_LIBRARY=/snap/pypy3/50/bin/libpypy3-c.so" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
Traceback (most recent call last):
  File "/home/user/.local/share/virtualenvs/project1_pypy-5DRSQTA5/site-packages/skbuild/setuptools_wrap.py", line 574, in setup
    languages=cmake_languages
  File "/home/user/.local/share/virtualenvs/project1_pypy-5DRSQTA5/site-packages/skbuild/cmaker.py", line 232, in configure
    os.path.abspath(CMAKE_BUILD_DIR())))

An error occurred while configuring with CMake.
  Command:
    "cmake" "/home/user/Projects/project1_pypy/pypy/opencv-python/opencv" "-G" "Unix Makefiles" "-DCMAKE_INSTALL_PREFIX:PATH=/home/user/Projects/project1_pypy/pypy/opencv-python/_skbuild/linux-x86_64-3.6/cmake-install" "-DPYTHON_EXECUTABLE:FILEPATH=/home/user/.local/share/virtualenvs/project1_pypy-5DRSQTA5/bin/python" "-DPYTHON_VERSION_STRING:STRING=3.6.9" "-DPYTHON_INCLUDE_DIR:PATH=/home/user/.local/share/virtualenvs/project1_pypy-5DRSQTA5/include" "-DPYTHON_LIBRARY:FILEPATH=" "-DSKBUILD:BOOL=TRUE" "-DCMAKE_MODULE_PATH:PATH=/home/user/.local/share/virtualenvs/project1_pypy-5DRSQTA5/site-packages/skbuild/resources/cmake" "-DPYTHON3_EXECUTABLE=/home/user/.local/share/virtualenvs/project1_pypy-5DRSQTA5/bin/python" "-DBUILD_opencv_python3=ON" "-DOPENCV_SKIP_PYTHON_LOADER=ON" "-DOPENCV_PYTHON3_INSTALL_PATH=python" "-DINSTALL_CREATE_DISTRIB=ON" "-DBUILD_opencv_apps=OFF" "-DBUILD_SHARED_LIBS=OFF" "-DBUILD_TESTS=OFF" "-DBUILD_PERF_TESTS=OFF" "-DBUILD_DOCS=OFF" "-DWITH_QT=4" "-DWITH_V4L=ON" "-DENABLE_PRECOMPILED_HEADERS=OFF" "-DWITH_IPP=OFF" "-D" "PYTHON3_LIBRARY=/snap/pypy3/50/bin/libpypy3-c.so" "-DCMAKE_BUILD_TYPE:STRING=Release"

所以我尝试编辑setup.py并在if os.name == 'nt' else [下添加:

So I tried editing setup.py and adding under if os.name == 'nt' else [:

"-DPYTHON_LIBRARY=/snap/pypy3/50/bin/libpypy3-c.so",

似乎即将完成编译,然后出现与以前相同的错误:Exception: Not found: 'python/cv2[^/]*\.pypy36\-pp73\-x86_64\-linux\-gnu\.so'

It seems like it's about to finish compiling and then I get the same error as before: Exception: Not found: 'python/cv2[^/]*\.pypy36\-pp73\-x86_64\-linux\-gnu\.so'

我没有正确传递compile参数吗?如何正确设置此路径变量?显然是将这两个路径连接起来形成错误的:CMake Error: The source directory "/home/user/Projects/project1_pypy/pypy/opencv-python/_skbuild/linux-x86_64-3.6/cmake-build/PYTHON3_LIBRARY=/snap/pypy3/50/bin/libpypy3-c.so" does not exist.

Am I not passing the compile argument properly? How can I set this path variable properly? It's obviously concatenating these two paths to form the erroneous: CMake Error: The source directory "/home/user/Projects/project1_pypy/pypy/opencv-python/_skbuild/linux-x86_64-3.6/cmake-build/PYTHON3_LIBRARY=/snap/pypy3/50/bin/libpypy3-c.so" does not exist.

通过错误输出,它向我显示了编译命令:

By the error output, it shows me the compile command:

"cmake" "/home/user/Projects/project1_pypy/pypy/opencv-python/opencv" "-DPYTHON_LIBRARY=/snap/pypy3/50/bin/libpypy3-c.so" "-G" "Unix Makefiles" "-DCMAKE_INSTALL_PREFIX:PATH=/home/user/Projects/project1_pypy/pypy/opencv-python/_skbuild/linux-x86_64-3.6/cmake-install" "-DPYTHON_EXECUTABLE:FILEPATH=/home/user/.local/share/virtualenvs/project1_pypy-5DRSQTA5/bin/python" "-DPYTHON_VERSION_STRING:STRING=3.6.9" "-DPYTHON_INCLUDE_DIR:PATH=/home/user/.local/share/virtualenvs/project1_pypy-5DRSQTA5/include" "-DPYTHON_LIBRARY:FILEPATH=" "-DSKBUILD:BOOL=TRUE" "-DCMAKE_MODULE_PATH:PATH=/home/user/.local/share/virtualenvs/project1_pypy-5DRSQTA5/site-packages/skbuild/resources/cmake" "-DPYTHON3_EXECUTABLE=/home/user/.local/share/virtualenvs/project1_pypy-5DRSQTA5/bin/python" "-DBUILD_opencv_python3=ON" "-DOPENCV_SKIP_PYTHON_LOADER=ON" "-DOPENCV_PYTHON3_INSTALL_PATH=python" "-DINSTALL_CREATE_DISTRIB=ON" "-DBUILD_opencv_apps=OFF" "-DBUILD_SHARED_LIBS=OFF" "-DBUILD_TESTS=OFF" "-DBUILD_PERF_TESTS=OFF" "-DBUILD_DOCS=OFF" "-DWITH_QT=4" "-DWITH_V4L=ON" "-DENABLE_PRECOMPILED_HEADERS=OFF" "-DWITH_IPP=OFF" "-DCMAKE_BUILD_TYPE:STRING=Release"

,但这似乎并未完全编译该模块.人力资源部我不明白为什么将arg添加到setup.py无效.

but that doesn't seem to fully compile the module. hrm. I don't get why adding the arg to setup.py didn't work.

答案应说明为pypy3编译opencv-python的修复程序

推荐答案

libc版本与系统不同.您使用系统libc构建numpy,而构建系统使用snap libc.您可以删除_skbuild文件夹并运行setup.py以查看错误消息(它不会与cache一起显示).使用从PPA安装的PyPy可以解决此问题.

libc version in /snap/core/current/lib/x86_64-linux-gnu/ is different from the system. You build numpy using system libc and the build system uses snap libc. You can delete _skbuild folder and run setup.py to see the error message ( It doesn't show with cache ). Use PyPy installed from PPA solves the problem.

这篇关于为pypy3编译opencv-python的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆