一半君的总结纸

听话只听一半君

Windows8.1下编译Maya 2016用的PyQt4 续 – 使用外部Python以及自行编译Qt

上篇,就算我打包好了,可是应该装去哪里呢,默认的nullsoft脚本是装去c:\python27下面,而不是maya安装目录下,觉得把本该在maya安装目录下的文件放到外面有点不好,所以这次用外面的Python来编译个大而全的

预先准备好

当然你必须得有 Microsoft Visual Studio 2012 Update 4

和cyrillef大神(即around-the-corner博主)的build script的不同之处在于,lz把QScintilla加进去了,用了最新的PyQt 4.11.4,没用maya的qt,自己来编译qt,所以全套跑完最少1小时以上吧,然后script里用到%path%的地方,lz都改了下,以避免遇到路径里有空格的情况时出错,配置的时候去掉了–no-designer-plugin,虽然不知道这个有啥用,加上了Phonon和各种sql插件,最后lz打了个包,文件下载地址在本文最下面

lz把修改版的build script放在了这里,使用的时候把相应的文件夹解压后,看起来会是这样的
pyqt1

Qt目录里面的压缩包要解开
pyqt2

Tip1
virtualbox里虚拟机测试的时候发现

from PyQt4.phonon import Phonon
# Error: ImportError: file <maya console> line 1: DLL load failed: The specified procedure could not be found. # 

经测试发现编译出来的phonon4.dll和maya自带的似乎不太一样,在maya里from PyQt4.phonon import Phonon的时候会报错。此时lz使用了乱搞的方法,把maya安装目录下的phonon4.dll复制到了C:\Python27\Lib\site-packages\PyQt4下,然后能用了…因为cpython的路径排在前面,先找到是C:\Python27\Lib\site-packages\PyQt4下的,不过这样乱搞肯定会有副作用吧。请事先备份下cpython的phonon4.dll,lz这样是乱搞。当然如果你Maya里不用Phonon,就不用这样乱搞了吧,在外面用phonon显然一切正常。

lz使用了更加乱搞的方法,把C:\Python27\Lib\site-packages\PyQt4\phonon4.dll移动到C:\Python27\DLLs下,然后修改PyQt4的__init__.py

大意就是如果在Maya里,就用Maya自己带的phonon4.dll,如果在外面,就用C:\Python27\DLLs下面的,但是这样有个副作用,就是你从开始菜单里开designer的时候,左侧工具栏里的phonon widget没了,所以你可以把designer快捷方式里的命令改改,这样会闪一下,但是你把窗口改成Minimized就看不到闪了

cmd /c "set ^"PATH=C:\python27\DLLs;%PATH%^" && start  C:\python27\Lib\site-packages\PyQt4\designer.exe"
# ^" 是escape char,就是"

designer

Tip2
如果你运行setup.bat的时候遇到这种脑残提示,多半是因为PATH里有些软件的路径带空格或是有&

'MySQL' is not recognized as an internal or external command,
operable program or batch file.
'MySQL' is not recognized as an internal or external command,
operable program or batch file.

解决方法可以试试
Why cmder does not import the user path variables?
How to escape variables with parentheses inside if-clause in a batch file?
虽然vcvars64.bat这些script里用到了类似

set "PATH=%WindowsSdkDir%bin\x64;%WindowsSdkDir%bin\x86;%PATH%"

这样的extended syntax

set "var=content"

但似乎遇到路径里有 & 的时候还是会错掉,所以不折腾了,最简单办法把路径里有&的那些给删了,mysql的路径名字起得真是脑残啊

# 原来是这样
c:\python27;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5.4 & MySQL Utilities 1.5.4 1.5\Doctrine extensions for PHP\

# 把后面删掉
c:\python27;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\;C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit\

Tip3: Qt\qt-adsk-4.8.6\plugins\phonon_backend目录下的phonon_ds94.dll放到Maya安装目录下的qt-plugins\phonon_backend目录下之后,你在maya里就可以用phonon了

本文编译出来的安装包可以从dropbox下载:
PyQt4-4.11.4-gpl-Py2.7-Qt4.8.6-x64-maya-2016.exe
qt-plugins-qt-4.8.6-phonon-sqldrivers.rar
lz修改过的打包脚本放在了这里

最终得到的安装包也放到了Maya 2011-2016的PyQt Windows7 Linux Mac OSX 国外大神编译版大合集里。

参考:
使用自动build script编译pyqt for maya 2015 with phonon
如何才能在Maya里用Phonon – 编译Qt 顺带试验编译PyQt4 for Maya 2014

Advertisements

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: