はんぎょねこの憂鬱

耳から変な汁が出てきた

PySide2 ビルドしてみる

ここ見たら大体書いてあるよ

https://wiki.qt.io/PySide2_GettingStarted

環境

  • Windows10
  • Python 3.6 (64bit)
  • Qt 5.6
  • OpenSSLは使わないよ

インストールしておくもの

ビルド

  1. pyside-setupリポジトリの5.6ブランチをrecursiveでcloneする
  2. 一応virtualenvでビルド環境つくってactivate
  3. sphinxモジュールをインストール
  4. VCコンパイラのパス通す
  5. wheelビルド実行
こんな感じ
> git clone -b 5.6 http://code.qt.io/cgit/pyside/pyside-setup.git/ --recursive
> pip install virtualenv
> virtualenv hogehoge
> hogehoge/Scripts/activate.bat
> pip install sphinx
> cd pyside-setup
> "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64
> python setup.py bdist_wheel --ignore-git --qmake="C:\Qt\Qt5.6.2\5.6\msvc2015_64\bin\qmake.exe" --cmake="C:\Program Files\CMake\bin\cmake.exe"
fcntlを呼ぼうとしてエラーが出る?

popenasync.pyのdecode関数を適当に修正
(たぶん日本語表示しようとして例外出てる)

def decode(b):
    try:
        return b.decode('utf-8')
    except UnicodeDecodeError:
        return b.decode('shift-jis')

英語圏へ対応する気はなさそうだ

RC Pass 1 failed to run. というエラーが出る?

rc.exeにパスが通っていないか別プラットフォームのrc.exeを読んで失敗している

set PATH=%PATH%;C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64

こんな感じでrc.exeのある場所にパスを通すか、WindowsSDKをインストールしなおすと良いと思う

bdist_wheelコマンドが見つからない?
pip install wheel

もしくはこのあたりを参考に

リンクエラーが発生する?

prebuiltなものとビルドターゲットがズレてると出る気がする。32bit版のPythonとかQtを使ってるとか、vcvarsall.bat呼ぶときにamd64つけてないとか

whlのサイズが大きいのが気になる?

setup.pyのdllコピーの規則がQt4時代から変わってないのが原因

  • デバッグ用のdllも含まれてしまっている
  • setup.pyの d4.dll, d?.dll となっている箇所を *d.dll に修正する