1746 exe = ex_ |
1746 exe = ex_ |
1747 |
1747 |
1748 return exe |
1748 return exe |
1749 |
1749 |
1750 ############################################################################### |
1750 ############################################################################### |
1751 # PySide utility functions below |
1751 # PySide/PySide2 utility functions below |
1752 ############################################################################### |
1752 ############################################################################### |
1753 |
1753 |
1754 |
1754 |
1755 def generatePySideToolPath(toolname): |
1755 def generatePySideToolPath(toolname, variant="2"): |
1756 """ |
1756 """ |
1757 Module function to generate the executable path for a PySide tool. |
1757 Module function to generate the executable path for a PySide/PySide2 tool. |
1758 |
1758 |
1759 @param toolname base name of the tool (string) |
1759 @param toolname base name of the tool |
1760 @return the PySide tool path with extension (string) |
1760 @type str |
1761 """ |
1761 @param variant indicator for the PySide variant |
|
1762 @type str |
|
1763 @return the PySide/PySide2 tool path with extension |
|
1764 @rtype str |
|
1765 """ |
|
1766 assert variant in ("1", "2") |
|
1767 |
1762 if isWindowsPlatform(): |
1768 if isWindowsPlatform(): |
1763 pysideInterpreter = checkPyside() |
1769 pysideInterpreters = checkPyside(variant) |
1764 interpreter = sys.version_info[0] - 2 |
1770 interpreter = sys.version_info[0] - 2 |
1765 hasPyside = pysideInterpreter[interpreter] |
1771 hasPyside = pysideInterpreters[interpreter] |
1766 # if it isn't the internal interpreter, it has to be the external one |
1772 # if it isn't the internal interpreter, it has to be the external one |
1767 if not hasPyside: |
1773 if not hasPyside: |
1768 interpreter = not interpreter |
1774 interpreter = not interpreter |
1769 if interpreter: |
1775 if interpreter: |
1770 prefix = os.path.dirname( |
1776 prefix = os.path.dirname( |
1771 Preferences.getDebugger("Python3Interpreter")) |
1777 Preferences.getDebugger("Python3Interpreter")) |
1772 else: |
1778 else: |
1773 prefix = os.path.dirname( |
1779 prefix = os.path.dirname( |
1774 Preferences.getDebugger("PythonInterpreter")) |
1780 Preferences.getDebugger("PythonInterpreter")) |
1775 if toolname == "pyside-uic": |
1781 # TODO: check this on Windows |
|
1782 if toolname in ["pyside-uic", "pyside2-uic"]: |
1776 return os.path.join(prefix, "Scripts", toolname + '.exe') |
1783 return os.path.join(prefix, "Scripts", toolname + '.exe') |
1777 else: |
1784 else: |
1778 return os.path.join(prefix, "Lib", "site-packages", "PySide", |
1785 return os.path.join( |
1779 toolname + ".exe") |
1786 prefix, "Lib", "site-packages", |
|
1787 "PySide{0}".format("" if variant == "1" else variant), |
|
1788 toolname + ".exe") |
1780 else: |
1789 else: |
1781 return toolname |
1790 if variant == "1": |
1782 |
1791 return toolname |
1783 |
1792 |
1784 def checkPyside(): |
1793 elif toolname == "pyside2-uic": |
1785 """ |
1794 return toolname |
1786 Module function to check the presence of PySide. |
1795 else: |
1787 |
1796 import distutils.sysconfig |
1788 @return list of two flags indicating the presence of PySide for Python2 |
1797 return os.path.join(distutils.sysconfig.get_python_lib(True), |
1789 and PySide for Python3 (boolean, boolean) |
1798 "PySide2", toolname) |
1790 """ |
1799 |
|
1800 |
|
1801 def checkPyside(variant="2"): |
|
1802 """ |
|
1803 Module function to check the presence of PySide/PySide2. |
|
1804 |
|
1805 @param variant indicator for the PySide variant |
|
1806 @type str |
|
1807 @return list of two flags indicating the presence of PySide/PySide2 for |
|
1808 Python2 and PySide/PySide2 for Python3 |
|
1809 @rtype tuple of (bool, bool) |
|
1810 """ |
|
1811 assert variant in ("1", "2") |
|
1812 |
1791 pysideInformation = [] |
1813 pysideInformation = [] |
1792 for interpreterName in ["PythonInterpreter", "Python3Interpreter"]: |
1814 for interpreterName in ["PythonInterpreter", "Python3Interpreter"]: |
1793 interpreter = Preferences.getDebugger(interpreterName) |
1815 interpreter = Preferences.getDebugger(interpreterName) |
1794 if interpreter == "" or not isinpath(interpreter): |
1816 if interpreter == "" or not isinpath(interpreter): |
1795 hasPyside = False |
1817 hasPyside = False |
1796 else: |
1818 else: |
1797 hasPyside = False |
1819 hasPyside = False |
1798 checker = os.path.join(getConfig('ericDir'), |
1820 checker = os.path.join(getConfig('ericDir'), |
1799 "Utilities", "PySideImporter.py") |
1821 "Utilities", "PySideImporter.py") |
1800 args = [checker] |
1822 args = [checker, "-" + variant] |
1801 proc = QProcess() |
1823 proc = QProcess() |
1802 proc.setProcessChannelMode(QProcess.MergedChannels) |
1824 proc.setProcessChannelMode(QProcess.MergedChannels) |
1803 proc.start(interpreter, args) |
1825 proc.start(interpreter, args) |
1804 finished = proc.waitForFinished(30000) |
1826 finished = proc.waitForFinished(30000) |
1805 if finished: |
1827 if finished: |