こちらは下記の記事を元に作成されました。
Building SIP、PyQt for Maya 2018 PyQt [http://www.riverbankcomputing.co.uk]はPythonのQtライブラリへのバインディングです。 Mayaは内部的にQtを使用するため、MayaのPythonスクリプトでPyQtモジュールを使用してカスタムUIを作成できます。 PyQtには、Maya、Qt、Pythonと同じライセンスはありません。 PyQtのライセンスについては、PyQtのWebサイトを参照してください。
Download PyQt: http://www.riverbankcomputing.com/software/pyqt/download
Download SIP: http://www.riverbankcomputing.com/software/sip/download
以下は、Mayaで動作することが分かっているPyQtモジュールのコピーを作成するための手順です。
Maya 2018は最新バージョンのPyQt-5.9 / SIP-4.19.2とバイナリ互換性のあるQt5.6.1を使用しています
QtソースコードのMaya修正版を使用することが重要です。カスタマイズされたQt 5.6.1ソースのコピーは、AutodeskのオープンソースWebサイト(http://www.autodesk.com/lgplsource)から入手でき、Mayaがサポートする各プラットフォーム用のQtを構築してインストールします。
ただし、Maya 2018では、PySideをビルドする必要はなくなりました。PyQtをビルドするための主要なQtツールがMayaディストリビューションに含まれています(つまり、qmake、moc、...)libxml、openSSL、OpenAL、python2.7、qt-5.6.1、およびtbbもMayaのincludeとlibフォルダにデフォルトで入っていますので、特に必要がない限り、それらのライブラリを以前のように再構築する必要はありません 。コミュニティソースのいくつかを含む 'MAYA_LOCATION / support / opensource'フォルダがあることに注意してください。
重要:Maya 2018は、devkit、include、およびmkspecsフォルダなしで出荷されます。 Windows、OSX、LinuxのAutodesk App StoreからMaya 2018の開発キットを入手できます。 devkitをダウンロードし、ファイルをMayaルートフォルダに解凍します。 システムにdevkit、include、mkspecsフォルダを正しくインストールするための指示を読んでください。
このドキュメントで使用されているスクリプトもGithubに掲載されています。
'http://www.riverbankcomputing.co.uk'からSIPとPyQtのソースをダウンロードします - ここで 'sip-4.19.3'と 'PyQt5_gpl-5.9'をダウンロードしました。 1つのフォルダに解凍します。
Mac
/Users/cyrille/Documents/_Maya2018Scripts/sip-4.19.3
/Users/cyrille/Documents/_Maya2018Scripts/PyQt5_gpl-5.9
/Users/cyrille/Documents/_Maya2018Scripts/ が私のローカルフォルダです。
SIPとPyQtを構築するための手順とスクリプトは次のとおりです。
APIドキュメントの指示に従って環境を設定します(デベロッパーリソース> APIガイド>ビルド環境の設定> Mac OS X環境、Mayaドキュメント)
Xcode 7.3.1を使用してXcodeをコンパイルする場合は、Xcodeを複数インストールする必要があります。 /Applications/Xcode.appをバックアップし、Xcode 7.3.1を使用して置き換えてください。
アクティブなxcodeを以下のように変更するには、xcode-selectを使用します。
sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer
qt.confファイルは、MAYA_LOCATIONとDEVKIT_LOCATIONを使用して、予想されるヘッダー/ライブラリー・ファイルを検索します。 したがって、PyQt5をビルドする前に、両方の環境変数を設定する必要があります。
DEVKIT_LOCATIONは、devkitがインクルードするディレクトリ、mkspecs、cmakeディレクトリがあるディレクトリを指している必要があります。
devkit / bin / qt.confを次のように変更します。
[Paths]
Prefix=
Libraries=$(MAYA_LOCATION)/MacOS
Binaries=$(DEVKIT_LOCATION)/devkit/bin
Headers=$(DEVKIT_LOCATION)/include/Qt
ArchData=$(DEVKIT_LOCATION)
Data=$(DEVKIT_LOCATION)
HostData=$(DEVKIT_LOCATION)
HostBinaries=$(DEVKIT_LOCATION)/devkit/bin
HostLibraries=$(MAYA_LOCATION)/MacOS
include / qt-5.6.1-include.tar.gzを/ include / Qtに書き出します。
qt-5.6.1-mkspecs.tar.gzを/ Applications / Autodesk / maya2017 / mkspecsに展開します。 qconfig.priが次のようになっていることを確認します。
qconfig.pri
#configuration
CONFIG += release def_files_disabled exceptions no_mocdepend stl x86_64 qt #qt_framework
QT_ARCH = macosx
QT_EDITION = OpenSource
QT_CONFIG += minimal-config small-config medium-config large-config full-config no-pkg-config dwarf2 phonon phonon-backend accessibility opengl reduce_exports ipv6 getaddrinfo ipv6ifname getifaddrs png no-freetype system-zlib nis cups iconv openssl corewlan concurrent xmlpatterns multimedia audio-backend svg script scripttools declarative release x86_64 qt #qt_framework
#versioning
QT_VERSION = 5.6.1
QT_MAJOR_VERSION = 5
QT_MINOR_VERSION = 6
QT_PATCH_VERSION = 1
#namespaces
QT_LIBINFIX =
QT_NAMESPACE =
QT_NAMESPACE_MAC_CRC =
SIPの構築とインストール
下記のスクリプトを使用してください。また、GitHubで見つけることもできます。
#!/usr/bin/env bash
MAYAQTBUILD="`dirname \"$0\"`" # Relative
export MAYAQTBUILD="`( cd \"$MAYAQTBUILD\" && pwd )`" # Absolutized and normalized
pushd $MAYAQTBUILD
export SIPDIR=$MAYAQTBUILD/sip-4.19.3
export MAYA_LOCATION=/Applications/Autodesk/maya2018
pushd $SIPDIR
$MAYA_LOCATION/Maya.app/Contents/bin/mayapy ./configure.py --arch=x86_64
make
sudo make install
popd
popd
PyQtの構築とインストール
下記のスクリプトを使用してください。また、GitHubで見つけることもできます。
#!/usr/bin/env bash
MAYAQTBUILD="`dirname \"$0\"`" # Relative
export MAYAQTBUILD="`( cd \"$MAYAQTBUILD\" && pwd )`" # Absolutized and normalized
pushd $MAYAQTBUILD
export MAYA_LOCATION=/Applications/Autodesk/maya2018/Maya.app/Contents
export DEVKIT_LOCATION=/Applications/Autodesk/maya2018
export QTDIR=$DEVKIT_LOCATION/devkit
export QMAKESPEC=$DEVKIT_LOCATION/mkspecs/macx-clang
export INCDIR_QT=$DEVKIT_LOCATION/include/Qt
export LIBDIR_QT=$MAYA_LOCATION/MacOS
error=0
if [ ! -f $QMAKESPEC/qmake.conf ];
then
echo "You need to install qt-5.6.1-mkspecs.tar.gz in $QTDIR/mkspecs !"
error=1
fi
if [ ! -f $INCDIR_QT/QtCore/qdir.h ];
then
echo "You need to uncompress $MAYA_LOCATION/devkit/include/qt-5.6.1-include.tar.gz in $INCDIR_QT !"
error=1
fi
# qt.conf - /Applications/Autodesk/maya2018/Maya.app/Contents/Resources
if [ ! -f $QTDIR/bin/qt.conf ];
then
echo "You need to copy $QTDIR/Resources/qt.conf in $QTDIR/bin !"
error=1
fi
test=`grep 'Data=$(DEVKIT_LOCATION)' $QTDIR/bin/qt.conf`
if [ -z "$test" ];
then
echo "You need to edit $QTDIR/bin/qt.conf to use 'Data=\$(DEVKIT_LOCATION)'"
error=1
fi
test=`grep 'Headers=$(DEVKIT_LOCATION)/include/Qt' $QTDIR/bin/qt.conf`
if [ -z "$test" ];
then
echo "You need to edit $QTDIR/bin/qt.conf to use 'Headers=\$(DEVKIT_LOCATION)/include/Qt'"
error=1
fi
test=`grep 'Libraries=$(MAYA_LOCATION)/MacOS' $QTDIR/bin/qt.conf`
if [ -z "$test" ];
then
echo "You need to edit $QTDIR/bin/qt.conf to use 'Libraries=\$(MAYA_LOCATION)/MacOS'"
error=1
fi
if [ $error -eq 1 ];
then
exit
fi
export DYLD_LIBRARY_PATH=$MAYA_LOCATION/MacOS
export DYLD_FRAMEWORK_PATH=$MAYA_LOCATION/Frameworks
export SIPDIR=$MAYAQTBUILD/sip-4.19.3
export PYQTDIR=$MAYAQTBUILD/PyQt5_gpl-5.9
export SIP_EXE=$MAYA_LOCATION/Frameworks/Python.framework/Versions/2.7/bin/sip
export SIP_INCLUDE=$MAYA_LOCATION/Frameworks/Python.framework/Versions/2.7/include/python2.7
pushd $PYQTDIR
export PATH=$QTDIR/bin:$PATH
echo
echo Environment
echo -----------
set
echo -----------
echo QT Settings
echo -----------
qmake -query
echo -----------
echo
$MAYA_LOCATION/bin/mayapy ./configure.py QMAKE_MAC_SDK=macosx10.11 QMAKE_RPATHDIR+=$LIBDIR_QT --sip=$SIP_EXE --sip-incdir=$SIP_INCLUDE -w --no-designer-plugin
make -j 8
sudo make install
popd
popd
私は、開発環境と同じMac OS X SDK 10.11に対してコンパイルしています。 他のバージョンとコンパイルしたい場合は、スクリプト(macosx10.11)を修正してください。 終了です! 記事末尾のテスト段落を確認してください。
Linux
/home/cyrille/Documents/_Maya2018Scripts/sip-4.19.3
/home/cyrille/Documents/_Maya2018Scripts/PyQt5_gpl-5.9
/home/cyrille/Documents/_Maya2018Scripts が私のローカルフォルダです。
SIPとPyQtを構築するための手順とスクリプトは次のとおりです。
APIドキュメントの指示に従って環境を設定してください(Mayaドキュメント内、開発者リソース> APIガイド>ビルド環境の設定> Linux環境(64ビット))。
qt.confファイルは、MAYA_LOCATIONとDEVKIT_LOCATIONを使用して、予想されるヘッダー/ライブラリー・ファイルを検索します。 したがって、PyQt5をビルドする前に、両方の環境変数を設定する必要があります。
DEVKIT_LOCATIONは、devkitがインクルードするディレクトリ、mkspecs、cmakeディレクトリがあるディレクトリを指している必要があります。
最初にqt.confをバックアップしてください.PyQt5をビルドした後にqt.confを復元する必要があります。 ... / bin / qt.confを以下のように置き換えます。
[Paths]
Prefix=
Libraries=$(MAYA_LOCATION)/lib
Binaries=$(DEVKIT_LOCATION)/bin
Headers=$(DEVKIT_LOCATION)/include/Qt
ArchData=$(DEVKIT_LOCATION)
Data=$(DEVKIT_LOCATION)
HostData=$(DEVKIT_LOCATION)
HostBinaries=$(DEVKIT_LOCATION)/bin
/include/qt-5.6.1-include.tar.gzを/ include / Qtに展開します。
/mkspecs/qt-5.6.1-mkspecs.tar.gzを/ mkspecsに展開します。
qmake、moc実行可能ファイルをMaya binディレクトリから作成します。
sudo chmod aog+x /usr/autodesk/maya2018/bin/moc
sudo chmod aog+x /usr/autodesk/maya2018/bin/qmake
SIP の構築とインストール
下記のスクリプトを使用してください。また、GitHubで見つけることもできます。
#!/usr/bin/env bash
MAYAQTBUILD="`dirname \"$0\"`" # Relative
export MAYAQTBUILD="`( cd \"$MAYAQTBUILD\" && pwd )`" # Absolutized and normalized
pushd $MAYAQTBUILD
export SIPDIR=$MAYAQTBUILD/sip-4.19.3
export MAYA_LOCATION=/usr/autodesk/maya2018
pushd $SIPDIR
$MAYA_LOCATION/bin/mayapy ./configure.py
make
sudo make install
popd
popd
PyQtの構築とインストール
下記のスクリプトを使用してください。また、GitHubで見つけることもできます。
#!/usr/bin/env bash
MAYAQTBUILD="`dirname \"$0\"`" # Relative
export MAYAQTBUILD="`( cd \"$MAYAQTBUILD\" && pwd )`" # Absolutized and normalized
pushd $MAYAQTBUILD
export MAYA_LOCATION=/usr/autodesk/maya2017
export QTDIR=$MAYA_LOCATION
export DEVKIT_LOCATION=$MAYA_LOCATION
export QMAKESPEC=$QTDIR/mkspecs/linux-g++-64
export INCDIR_QT=$MAYA_LOCATION/include/Qt
export LIBDIR_QT=$QTDIR/lib
error=0
if [ ! -f $QMAKESPEC/qmake.conf ];
then
echo "You need to install qt-5.6.1-mkspecs.tar.gz in $QTDIR/mkspecs !"
error=1
fi
if [ ! -f $INCDIR_QT/QtCore/qdir.h ];
then
echo "You need to uncompress $MAYA_LOCATION/include/qt-5.6.1-include.tar.gz in $INCDIR_QT !"
error=1
fi
# qt.conf - $QTDIR/bin/qt.conf
if [ ! -f $QTDIR/bin/qt.conf ];
then
echo "You need to copy $QTDIR/Resources/qt.conf in $QTDIR/bin !"
error=1
fi
# The grep string should be in single quote('), if it is in double quote (""),
# shell will expand the variable, hence the intension of the below grep will fail
test=`grep 'Headers=$(DEVKIT_LOCATION)/include/Qt' $QTDIR/bin/qt.conf`
if [ -z "$test" ];
then
echo "You need to edit $QTDIR/bin/qt.conf to use 'Headers=$(DEVKIT_LOCATION)/include/Qt'"
error=1
fi
if [ $error -eq 1 ];
then
exit
fi
export SIPDIR=$MAYAQTBUILD/sip-4.19.3
export PYQTDIR=$MAYAQTBUILD/PyQt5_gpl-5.9
pushd $PYQTDIR
export PATH=$QTDIR/bin:$PATH
$QTDIR/bin/mayapy ./configure.py LIBDIR_QT=$LIBDIR_QT INCDIR_QT=$INCDIR_QT MOC=$QTDIR/bin/moc -w --no-designer-plugin
make -j 8
sudo make install
popd
popd
終了です! 記事末尾のテスト段落を確認してください。
Windows
D:\__sdkext\_Maya2018 Scripts\sip-4.19.3
D:\__sdkext\_Maya2018 Scripts\PyQt5_gpl-5.9
D:\__sdkext\_Maya2018 Scripts が私のローカルフォルダです。
SIPとPyQtを構築するための手順とスクリプトは次のとおりです。
APIドキュメントの指示に従って環境を設定してください(Mayaドキュメントの開発者リソース> APIガイド>ビルド環境の設定> Windows環境(64ビット))
最初にqt.confをバックアップしてください.PyQt5をビルドした後にqt.confを復元する必要があります。 ... / bin / qt.confを以下のように置き換えます。
[Paths]
Prefix=$(MAYA_LOCATION)
Libraries=lib
Binaries=bin
Headers=include/Qt
Data=.
Plugins=qt-plugins
Translations=qt-translations
Qml2Imports=qml
/include/qt-5.6.1-include.tar.gzを/ include / Qtに解凍します。
/ mkspecs / qt-5.6.1-mkspecs.tar.gzを/ mkspecsに解凍します。
VS2012 x64ネイティブツールのコマンドプロンプトで以下のビルドスクリプトを実行してください。 フォルダにインストールされたMayaに管理者権限(プログラムファイルなど)が必要な場合は、管理者としてコマンドプロンプトを実行してください。
環境設定
@echo off
set MAYAVERSION=2018
set ADSKQTVERSION=5.6.1
set SIPVERSION=4.19.3
set PYQTVERSION=5.9
set MAYADRIVE=m:
set BUILDDRIVE=v:
if exist %MAYADRIVE%\nul subst %MAYADRIVE% /d
subst %MAYADRIVE% "C:\Program Files\Autodesk\Maya%MAYAVERSION%"
set MAYA_LOCATION=%MAYADRIVE%
set MAYAPYQTBUILD=%~dp0
rem Removing trailing \
set MAYAPYQTBUILD=%MAYAPYQTBUILD:~0,-1%
if exist %BUILDDRIVE%\nul subst %BUILDDRIVE% /d
subst %BUILDDRIVE% "%MAYAPYQTBUILD%"
set SIPDIR=%BUILDDRIVE%\sip-%SIPVERSION%
set PYQTDIR=%BUILDDRIVE%\PyQt5_gpl-%PYQTVERSION%
rem set ADSKQTDIR=%BUILDDRIVE%\qt-%ADSKQTVERSION%
set QTDIR=%MAYA_LOCATION%
set PATH=%QTDIR%\bin;%PATH%
set MSVC_VERSION=2015
set MSVC_DIR=C:\Program Files (x86)\Microsoft Visual Studio 14.0
set QMAKESPEC=%QTDIR%\mkspecs\win32-msvc%MSVC_VERSION%
set _QMAKESPEC_=win32-msvc%MSVC_VERSION%
if ["%LIBPATH%"]==[""] call "%MSVC_DIR%\VC\vcvarsall" amd64
set INCLUDE=%INCLUDE%;%MAYA_LOCATION%\include\python2.7
set LIB=%LIB%;%MAYA_LOCATION%\lib
SIPの構築とインストール
下記のスクリプトを使用してください。また、GitHubで見つけることもできます。
@echo off
set XXX=%~dp0
if ["%MAYAPYQTBUILD%"]==[""] call "%XXX%setup.bat"
pushd %SIPDIR%
rem "%MAYA_LOCATION%\bin\mayapy" configure-ng.py --spec %_QMAKESPEC_%
"%MAYA_LOCATION%\bin\mayapy" configure.py
nmake
nmake install
popd
PyQtの構築とインストール
下記のスクリプトを使用してください。また、GitHubで見つけることもできます。
@echo off
set XXX=%~dp0
if ["%MAYAPYQTBUILD%"]==[""] call "%XXX%setup.bat"
set QMAKESPEC=%QTDIR%\mkspecs\%_QMAKESPEC_%
if not exist "%QMAKESPEC%\qmake.conf" (
echo "You need to uncompress %MAYA_LOCATION%\mkspecs\qt-5.6.1-mkspecs.tar.gz !"
goto end
)
if not exist "%MAYA_LOCATION%\include\Qt\QtCore\qdir.h" (
echo "You need to uncompress %MAYA_LOCATION%\include\qt-5.6.1-include.tar.gz in %MAYA_LOCATION%\include\Qt !"
goto end
)
findstr /L /C:"Headers=include/Qt" "%MAYA_LOCATION%\bin\qt.conf" >nul 2>&1
if ERRORLEVEL 1 (
echo "You need to edit %MAYA_LOCATION%\bin\qt.conf to use 'Headers=include/Qt'"
goto end
)
findstr /L /C:"-lqtmain -lshell32" "%QTDIR%\mkspecs\common\msvc-desktop.conf" >nul 2>&1
if ERRORLEVEL 1 (
echo "You need to edit %QTDIR%\mkspecs\common\msvc-desktop.conf to use 'QMAKE_LIBS_QT_ENTRY = -lqtmain -lshell32'"
goto end
)
if not exist "%MAYA_LOCATION%\include\Qt\qtnfc.disabled" (
echo "You need to rename %MAYA_LOCATION%\include\Qt\qtnfc to %MAYA_LOCATION\include\Qt\qtnfc.disabled"
goto end
)
pushd %PYQTDIR%
"%MAYA_LOCATION%\bin\mayapy" configure.py --spec %QMAKESPEC% LIBDIR_QT="%QTDIR%\lib" INCDIR_QT="%QTDIR%\include\Qt" MOC="%QTDIR%\bin\moc.exe" --sip="%QTDIR%\Python\sip.exe" --sip-incdir="%QTDIR%\Python\include" -w --no-designer-plugin
nmake
nmake install
popd
:end
終了です! 記事末尾のテスト段落を確認してください。
テストを行う
この例をMaya Script Editor(Pythonタブ内)にコピーして貼り付け、コードを実行します:
import sys
from PyQt5.QtWidgets import (QWidget, QToolTip, QPushButton)
from PyQt5.QtGui import QFont
class Example(QWidget):
def __init__(self):
super(Example,self).__init__()
self.initUI()
def initUI(self):
QToolTip.setFont(QFont('SansSerif', 10))
self.setToolTip('This is a <b>QWidget</b> widget')
btn = QPushButton('Button', self)
btn.setToolTip('This is a <b>QPushButton</b> widget')
btn.resize(btn.sizeHint())
btn.move(50, 50)
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Tooltips')
self.show()
ex = Example()
ダイアログが表示されたら、すべて設定されています。