3

My knowledge of Python is still pretty basic, and I am only now trying to wrap my head around how to use / call libraries from within Maya. (Because I need to create a basic UI from QT Designer and have it be opened in Maya after converting it to a .py file)

After I learned to properly convert a .ui to a .py, I now get this error in Maya

"Module use of python34.dll conflicts with this version of Python"

I tried following what was said here and here, but even then - after setting these environment variables...

PYTHONHOME = C:\Program Files\Autodesk\Maya2016\bin\maya.exe

PYTHONPATH = C:\Python34

... I a still unable to run a basic .py file. In fact - as long as the PYTHONHOME variable is in effect, Python from within Maya no longer does anything.

This code below is the resulting python file that I got from converting the .ui file that I saved out of QT Designer.

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'test.ui'
#
# Created by: PyQt5 UI code generator 5.4.1
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 300)
        self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
        self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32))
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")

        self.retranslateUi(Dialog)
        self.buttonBox.accepted.connect(Dialog.accept)
        self.buttonBox.rejected.connect(Dialog.reject)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))


if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    Dialog = QtWidgets.QDialog()
    ui = Ui_Dialog()
    ui.setupUi(Dialog)
    Dialog.show()
    sys.exit(app.exec_())

I've come across some different online notes that advised the use of PySide, and after trying to use:

from PySide.QtCore import *
from PySide.QtGui import *

I still couldn't test if this works, because apparently QtWidgets isn't a module?

I'm pretty lost. The bigger picture is that I just want to be able to run a ui created from QT Designer from Maya's script editor. I have no idea where to begin with learning about libraries. Would anyone here be kind enough to give some advice?

Additional info:

I am using Maya 2016, running on a Windows 10 64 bit OS.
I also have a Python 2.7 in my C: drive 
And I am using PyQt5-5.4.1-gpl-Py3.4-Qt5.4.1-x64

Thank you for your time.

Community
  • 1
  • 1
Gogo
  • 53
  • 1
  • 2
  • 8

1 Answers1

3

Maya's python interpreter is in the 2.7 series (or 2.6 for Maya 2013 and earlier). Your PYTHONPATH is pointing at a python 3.4 install. You also want to make sure that if your Python 3.4 is in PATH it comes later than the maya python install location. This is all to makes sure that Maya doesn't get confused and try to run python 3 code or dlls which it cannot handle.

Also, maya 2016 is running on PyQT4. Maya 2017 runs on PyQT5. So you'll probably want to use a PyQT4 version of designer

Related:

theodox
  • 12,028
  • 3
  • 23
  • 36
  • **Thank you @theodox** Took your advice and got a copy of qt4 (PyQt4-4.10-gpl-Py2.7-Qt4.8.4-x64). I uninstalled python 3.4 (kept 2.7) and made sure that I cleared the paths.I copied pyQT4 folder into the maya site Packages folder, I even included sip.pyd which I got from (WinPython-64bit-3.4.3.7) and placed it in the same folder. Checked the path, made sure that c:\Python27 was entered last, and created a PYTHONPATH variable that aslo points to c:\Python27. -- but now I get this -- `ImportError: file line 12: DLL load failed: The specified module could not be found.` – Gogo Feb 10 '17 at 07:31
  • Maya includes PyQT4 -- you don't need to add it! And you should probably set your PYTHONPATH to point at the maya python location – theodox Feb 10 '17 at 23:38