本文摘自12月18日的Maya-Python Advent Calendar 2016。
介绍
众所周知,PySide在Maya 2017中已成为PySide2。
此更改引起了一些麻烦。
- 我们使用PySide构建独立的应用程序,Maya,MotionBuilder,Photoshop等,但是如果仅Maya成为PySide2,我们将无法共享各种东西。
- 我总是将ui文件等转换为Python代码并使用它,所以遇到了麻烦,因为Maya不包含pyside-rcc.exe。
我正在考虑验证PySide2以便找到解决方案,但Maya已采用PySide2的Alpha版本。
尚未在PyPI上注册。
甚至在可靠的Python扩展软件包的非官方Windows二进制文件中也没有。
从内心深处令人讨厌,但我会尽力构建它。
也许它会失败,但是我希望它能对某人有所帮助。
环境
我觉得它充满了恶魔,但我验证了以下环境。
我推荐Visual Studio 2008,但我不喜欢它,所以我不使用它。
- Windows 10
- Python 2.7.12
- Visual Studio 2015社区
制备
http://wiki.qt.io/PySide2_GettingStarted
暂时安装必要的软件。由于PC相对较新,因此数量不多。
克隆git仓库。我暂时选择了
它似乎是使用CMake构建的,因此请下载CMake 3.7.1。
建造挑战
创建virtualenv
建议使用
virtualenv,因此请创建并启用它。
1 2 3 | pushd C:\pyside python -m virtualenv venv27 venv27\Scripts\activate.bat |
git子模块--init
pyside-setup.git使用子模块连接到pyside2,shiboken2和其他存储库,因此git子模块--init。我正在使用TortoiseGit,因为它很烦人,因此我将省略该命令。
在所有子模块中都出现错误,但是当我再次尝试时,没有错误,并且成功。
内部版本
魔术
1 | "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" |
使用
路径
构建
1 | python setup.py install --build-tests --qmake="C:\Qt\5.6\msvc2015_64\bin\qmake.exe" --cmake="C:\Program Files\CMake\bin\cmake.exe" |
错误
1 2 3 4 5 6 7 8 9 10 11 12 13 | [ 10%] Building CXX object ApiExtractor/tests/CMakeFiles/testdtorinformation.dir/testdtorinformation_automoc.cpp.obj testdtorinformation_automoc.cpp [ 10%] Linking CXX executable testdtorinformation.exe Qt5Core.lib(Qt5Core.dll) : fatal error LNK1112: モジュールのコンピューターの種類 'x64' は対象コンピューターの種類 'X86' と競合しています。 LINK failed. with 1112 NMAKE : fatal error U1077: '"C:\Program Files\CMake\bin\cmake.exe"' : リターン コード '0xffffffff' Stop. NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\nmake.exe"' : リターン コード '0x2' Stop. NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\nmake.exe"' : リターン コード '0x2' Stop. error: Error compiling shiboken2 |
还早。它不是用64位构建的吗?
测试似乎程序的链接给出了错误,所以我们不要创建测试。
1 | python setup.py install --qmake="C:\Qt\5.6\msvc2015_64\bin\qmake.exe" --cmake="C:\Program Files\CMake\bin\cmake.exe" |
非常先进(尽管它是siboken2),但仍然是错误
1 2 3 4 5 6 7 8 9 10 11 12 13 | [ 80%] Building CXX object libshiboken/CMakeFiles/libshiboken.dir/shibokenbuffer.cpp.obj shibokenbuffer.cpp [ 81%] Linking CXX shared library shiboken2.dll python27.lib(python27.dll) : fatal error LNK1112: モジュールのコンピューターの種類 'x64' は対象コンピューターの種類 'X86' と競合しています。 LINK failed. with 1112 NMAKE : fatal error U1077: '"C:\Program Files\CMake\bin\cmake.exe"' : リターン コード '0xffffffff' Stop. NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\nmake.exe"' : リターン コード '0x2' Stop. NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\nmake.exe"' : リターン コード '0x2' Stop. error: Error compiling shiboken2 |
让我们认真调查。您在哪里指定X64?
毕竟,即使我阅读了Makefile,我也不明白。
CMake找到了一些有关使其成为Visual Studio 2015附带的命令提示符的文章。
"魔术"很甜。
1 | "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 |
还有一个选项可以指定
车轮的创建,并且git命令似乎可以轻松执行,因此请更改命令选项以禁用它并执行构建。
1 | python setup.py bdist_wheel --ignore-git --qmake="C:\Qt\5.6\msvc2015_64\bin\qmake.exe" --cmake="C:\Program Files\CMake\bin\cmake.exe" |
setup.py也可以选择指定OpenSSL,因此如果仔细查看日志,则会禁用OpenSSL。迈卡(Maika)阿查
1 2 3 4 5 6 | Qt docs: C:/Qt/Docs/Qt-5.6 Qt plugins: C:/Qt/5.6/msvc2015_64/plugins --- OpenSSL libs: None ============================== Building module shiboken2... |
30分钟后???
我通过了构建。有一些奇怪的事情???
1 2 3 4 5 6 7 8 9 10 11 12 13 | running install_egg_info Copying pyside_package\PySide2.egg-info to build\bdist.win-amd64\wheel\.\PySide2-2.0.0.dev0-py2.7.egg-info running install_scripts *** Install completed C:\pyside\venv27\lib\site-packages\wheel\pep425tags.py:77: RuntimeWarning: Config variable 'Py_DEBUG' is unset, Python ABI tag may be incorrect warn=(impl == 'cp')): C:\pyside\venv27\lib\site-packages\wheel\pep425tags.py:81: RuntimeWarning: Config variable 'WITH_PYMALLOC' is unset, Python ABI tag may be incorrect warn=(impl == 'cp')): C:\pyside\venv27\lib\site-packages\wheel\pep425tags.py:87: RuntimeWarning: Config variable 'Py_UNICODE_SIZE' is unset, Python ABI tag may be incorrect sys.version_info < (3, 3))) \ creating build\bdist.win-amd64\wheel\PySide2-2.0.0.dev0.dist-info\WHEEL (venv27) C:\pyside\pyside-setup> |
安装
轮输出目的地是
如果您在当前环境中进行pip安装,则在出现问题时很难理解原因,因此请创建一个新的virtualenv并进行安装。
1 2 3 4 5 6 7 8 9 10 11 | (venv27) C:\pyside\pyside-setup>deactivate C:\pyside\pyside-setup>cd .. C:\pyside> C:\pyside>python -m virtualenv venv_pyside C:\pyside>venv_pyside\Scripts\activate.bat (venv_pyside) C:\pyside>python -m pip install pyside-setup\dist\PySide2-2.0.0.dev0-cp27-cp27m-win_amd64.whl Processing c:\pyside\pyside-setup\dist\pyside2-2.0.0.dev0-cp27-cp27m-win_amd64.whl Installing collected packages: PySide2 Successfully installed PySide2-2.0.0.dev0 (venv_pyside) C:\pyside>python -m pip freeze PySide2==2.0.0.dev0 |
让我们检查示例是否在
中工作。
1 | (venv_pyside) C:\pyside>python pyside-setup\sources\pyside2-examples\examples\dialogs\standarddialogs.py |
有效。
目标资源编译器!
目前,仅检查似乎正在移动的气氛,然后再次检查操作。嗯
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | (venv_pyside) C:\pyside>C:\pyside\venv_pyside\Lib\site-packages\PySide2\pyside2-rcc.exe PySide2 resource compiler Usage: C:\pyside\venv_pyside\Lib\site-packages\PySide2\pyside2-rcc.exe [options] <inputs> Options: -o file Write output to file rather than stdout -py2 Generate code for any Python v2.x version -py3 Generate code for any Python v3.x version (default) -name name Create an external initialization function with name -threshold level Threshold to consider compressing files -compress level Compress input files by level -root path Prefix resource access path with root path -no-compress Disable all compression -version Display version -help Display this information |
概要
令人惊讶的是,构建过程很顺利,并在很短的时间内完成了。
1 2 3 4 5 | "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 python setup.py bdist_wheel --ignore-git --qmake="C:\Qt\5.6\msvc2015_64\bin\qmake.exe" --cmake="C:\Program Files\CMake\bin\cmake.exe" python -m pip install dist\PySide2-2.0.0.dev0-cp27-cp27m-win_amd64.whl |
我忘记写源代码的修订版。
1 2 3 4 5 6 7 8 | > git rev-parse HEAD 6026e8b4f22d630e4e61424e153a605c060c22bb > git submodule status +eef6e46bf205e76616ae3fbfca92c917df22b6c4 sources/pyside2 (1.2.2-399-geef6e46) +4ca11515b6c5376269cb91a4975e8c5b71a2cdb4 sources/pyside2-examples (heads/dev) 7fe32567c75b6b9985b9efbecf74477c9e829fb2 sources/pyside2-tools (heads/dev) +8611bda3b346762e0589402f130b73f20dd75914 sources/shiboken2 (1.2.2-168-g8611bda) +ed7b7ceddc2c0ec6115d58a0611441d972ea1f97 wiki (heads/master) |
OpenSSL也是无效的,我完全没有确认操作,但是我暂时将其共享。单击此处下载
参考
https://fredrikaverpil.github.io/2016/08/17/compiling-pyside2/