0x01 情况是这样的
老夫重装了系统,重装kivy的时候用的是最新稳定版1.9.1,发现运行kivy程序时提示opengl版本过低,后来谷歌了一圈在官方的github上看到说是1.9.1开始的bug,不能正常识别某些显卡的opengl版本,于是老夫就开始研究编译安装kivy,因为官方提供的1.9.0包是自带python的,而我要把kivy安装到anaconda上,就有了这篇文章。
本文环境:win7 64-bit 旗舰版、anaconda 2.2.0 64-bit python 2.7.9(安装在D:\DEV) 0x02 安装kivy出现opengl错误
使用conda搜索没有找到适用于64bitpython 2.7.10的kivy,可能是没有加入anaconda模块库。这里直接从这里戳我下载Kivy-1.9.1+sdl2-cp27-none-win_amd64.whl - pip install Kivy-1.9.1+sdl2-cp27-none-win_amd64.whl
复制代码
要让视频能够运行,必须安装gstreamer。这里从官网下载gstreamer并安装。运行例子中的videoplayer.py会显示如下提示。
经过搜索得知是1.9.1以及之后的kivy版本存在的bug,不能正常识别系统显卡的opengl版本。
0x03 编译安装kivy
在编译之前,我们需要先升级下conda、pip、wheel、setuptool等包管理工具,命令:
根据官网windows下kivy编译步骤,新建Anaconda\Lib\distutils\distutils.cfg,写入如下内容:
- [build]
- compiler = mingw32
复制代码
我们不使用上述连接中提到的下载mingwpy进行编译,因为mingwpy未能正常识别出dep.kivy.gstreamer等dep.kivy包,在编译kivy中提示未能找到gst.h,我怀疑dep.kivy.gstreamer作为已编译包不包含头文件,并且Anaconda不能正常兼容dep.kivy包,在启动python时会提示dep.kivy包的pth文件错误,需要注释掉pth文件才能正常启动python和conda等工具,但是注释掉pth就不能使用dep.kivy包。
从官网获取1.9.0的安装包,解压这个压缩包,把gstreamer、MinGW、SDL2复制到DEV目录下,建立编译kivy的环境,在DEV下新建批处理文件kivy-2.7.bat,内容如下: - @ECHO off
- set KIVY_PORTABLE_ROOT=%~dp0
- set PY_VER=27
- set PYTHON_DIR=Anaconda
- ::set KIVY_DIR=kivy%PY_VER%
- ECHO botstrapping Kivy @ %KIVY_PORTABLE_ROOT% with Python %KIVY_PORTABLE_ROOT%%PYTHON_DIR%
- IF DEFINED kivy_paths_initialized (GOTO :runkivy)
- ECHO Setting Environment Variables:
- ECHO #################################
- set GST_REGISTRY=%KIVY_PORTABLE_ROOT%gstreamer\registry.bin
- ECHO GST_REGISTRY
- ECHO %GST_REGISTRY%
- ECHO ---------------
- set KIVY_SDL2_PATH=%KIVY_PORTABLE_ROOT%SDL2\lib;%KIVY_PORTABLE_ROOT%SDL2\include\SDL2;%KIVY_PORTABLE_ROOT%SDL2\bin
- ECHO KIVY_SDL2_PATH
- ECHO %KIVY_SDL2_PATH%
- ECHO ---------------
- set USE_SDL2=1
- ECHO USE_SDL2
- ECHO %USE_SDL2%
- ECHO ---------------
- set GST_PLUGIN_PATH=%KIVY_PORTABLE_ROOT%gstreamer\lib\gstreamer-1.0
- ECHO GST_PLUGIN_PATH:
- ECHO %GST_PLUGIN_PATH%
- ECHO ---------------
- set PATH=%KIVY_PORTABLE_ROOT%;%KIVY_PORTABLE_ROOT%%PYTHON_DIR%;%KIVY_PORTABLE_ROOT%tools;%KIVY_PORTABLE_ROOT%%PYTHON_DIR%\Scripts;%KIVY_PORTABLE_ROOT%gstreamer\bin;%KIVY_PORTABLE_ROOT%MinGW\bin;%KIVY_PORTABLE_ROOT%SDL2\bin;%PATH%
- ECHO PATH:
- ECHO %PATH%
- ECHO ----------------------------------
- set PKG_CONFIG_PATH=%KIVY_PORTABLE_ROOT%gstreamer\lib\pkgconfig;%PKG_CONFIG_PATH%
- ::set PYTHONPATH=%KIVY_PORTABLE_ROOT%%KIVY_DIR%;%PYTHONPATH%
- ECHO PYTHONPATH:
- ::ECHO %PYTHONPATH%
- ECHO ----------------------------------
- SET kivy_paths_initialized=1
- ECHO ##################################
- :runkivy
- ECHO done bootstraping kivy...have fun!\n
- IF (%1)==() GOTO SHELL
- ECHO running "python.exe %*" \n
- python.exe %*
- IF %errorlevel% NEQ 0 (PAUSE)
- GOTO END
- :SHELL
- ECHO.
- ECHO -----------------------------------------------------------------------
- ECHO - Running a shell, you can browse kivyexamples and launch apps with: -
- ECHO - python app.py -
- ECHO -----------------------------------------------------------------------
- ECHO.
- cmd
- :END
复制代码从官方github下载1.9.0源代码放到DEV目录下,运行kivy-2.7,命令: - pip install kivy-stable-1.9.0.zip
复制代码
就会自动编译并安装kivy 1.9.0。
|