saber 发表于 2016-4-28 10:48:42

【前方高能系列之二】anaconda下编译安装kivy

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.whlpip install Kivy-1.9.1+sdl2-cp27-none-win_amd64.whl
要让视频能够运行,必须安装gstreamer。这里从官网下载gstreamer并安装。运行例子中的videoplayer.py会显示如下提示。

http://kivy.club/forum.php?mod=image&aid=7&size=300x300&key=61429ed115a926ef&nocache=yes&type=fixnone
经过搜索得知是1.9.1以及之后的kivy版本存在的bug,不能正常识别系统显卡的opengl版本。


0x03   编译安装kivy
    在编译之前,我们需要先升级下conda、pip、wheel、setuptool等包管理工具,命令:
conda update conda
根据官网windows下kivy编译步骤,新建Anaconda\Lib\distutils\distutils.cfg,写入如下内容:


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。
转载请注明来自kivy中文论坛http://kivy.club   by面包sama
页: [1]
查看完整版本: 【前方高能系列之二】anaconda下编译安装kivy