尝试构建PySide2


本文摘自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仓库。我暂时选择了C:\pyside\pyside-setup

  • Qt为5.6,因此请从Qt下载适用于Windows 64位(VS 2015)的Qt 5.6.2。
  • 它似乎是使用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,因为它很烦人,因此我将省略该命令。

    2016-12-17_13h21_19.png

    在所有子模块中都出现错误,但是当我再次尝试时,没有错误,并且成功。

    内部版本

    魔术

    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>

    安装

    轮输出目的地是dist\PySide2-2.0.0.dev0-cp27-cp27m-win_amd64.whl
    如果您在当前环境中进行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

    有效。

    2016-12-17_15h30_29.png

    目标资源编译器!
    目前,仅检查似乎正在移动的气氛,然后再次检查操作。嗯

    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/