PluginPyInstaller.py

Tue, 25 Oct 2022 08:57:22 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Tue, 25 Oct 2022 08:57:22 +0200
branch
eric7
changeset 50
40a4b95ca9be
parent 49
3c0c8d42614c
child 51
37e614c54ea5
permissions
-rw-r--r--

Created global tag <release-10.1.1>.

1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
1 # -*- coding: utf-8 -*-
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
2
43
01ce3d6f7a07 Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 38
diff changeset
3 # Copyright (c) 2018 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
4 #
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
5
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
6 """
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
7 Module implementing the PyInstaller interface plug-in.
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
8 """
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
9
35
d9b3cadaf707 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 34
diff changeset
10 import contextlib
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
11 import os
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
12 import platform
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
13 import shutil
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
14
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
15 from PyQt6.QtCore import pyqtSlot, QObject, QCoreApplication, QTranslator, QProcess
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
16 from PyQt6.QtWidgets import QDialog
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
17
47
3b9805bff70c Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
18 from eric7 import Utilities
3b9805bff70c Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
19 from eric7.EricGui.EricAction import EricAction
3b9805bff70c Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
20 from eric7.EricWidgets import EricMessageBox
3b9805bff70c Adapted the import statements to the new structure.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 46
diff changeset
21 from eric7.EricWidgets.EricApplication import ericApp
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
22
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
23 # Start-Of-Header
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
24 name = "PyInstaller Plugin"
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
25 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
26 autoactivate = True
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
27 deactivateable = True
49
3c0c8d42614c Fixed some forgotten header changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 47
diff changeset
28 version = "10.1.1"
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
29 className = "PyInstallerPlugin"
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
30 packageName = "PyInstallerInterface"
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
31 shortDescription = "Show dialogs to configure and execute PyInstaller."
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
32 longDescription = (
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
33 """This plug-in implements dialogs to configure and execute PyInstaller"""
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
34 """ for an eric project. PyInstaller must be available or must be"""
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
35 """ installed via 'pip install PyInstaller'."""
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
36 )
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
37 needsRestart = False
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
38 pyqtApi = 2
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
39 # End-Of-Header
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
40
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
41 error = ""
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
42
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
43 exePy3 = []
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
44
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
45
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
46 def exeDisplayDataList():
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
47 """
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
48 Module function to support the display of some executable info.
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
49
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
50 @return list of dictionaries containing the data to query the presence of
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
51 the executable
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
52 @rtype list of dict
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
53 """
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
54 dataList = []
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
55 data = {
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
56 "programEntry": True,
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
57 "header": QCoreApplication.translate(
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
58 "PyInstallerPlugin", "Packagers - PyInstaller"
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
59 ),
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
60 "exe": "dummyExe",
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
61 "versionCommand": "--version",
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
62 "versionStartsWith": "dummyExe",
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
63 "versionPosition": -1,
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
64 "version": "",
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
65 "versionCleanup": None,
27
25ff8953e335 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
66 "versionRe": "^\\d",
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
67 }
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
68
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
69 if _checkProgram():
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
70 for exePath in exePy3:
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
71 data["exe"] = exePath
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
72 data["versionStartsWith"] = ""
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
73 dataList.append(data.copy())
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
74 else:
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
75 dataList.append(data)
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
76 return dataList
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
77
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
78
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
79 def _findExecutable(majorVersion):
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
80 """
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
81 Restricted function to determine the names of the executables.
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
82
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
83 @param majorVersion major python version
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
84 @type int
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
85 @return names of the executables
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
86 @rtype list of str
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
87 """
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
88 # Determine Python Version
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
89 if majorVersion == 3:
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
90 minorVersions = range(16)
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
91 else:
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
92 return []
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
93
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
94 executables = set()
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
95 if Utilities.isWindowsPlatform():
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
96 #
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
97 # Windows
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
98 #
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
99 try:
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
100 import winreg
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
101 except ImportError:
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
102 import _winreg as winreg # __IGNORE_WARNING__
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
103
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
104 def getExePath(branch, access, versionStr):
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
105 exes = []
35
d9b3cadaf707 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 34
diff changeset
106 with contextlib.suppress(WindowsError, OSError):
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
107 software = winreg.OpenKey(branch, "Software", 0, access)
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
108 python = winreg.OpenKey(software, "Python", 0, access)
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
109 pcore = winreg.OpenKey(python, "PythonCore", 0, access)
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
110 version = winreg.OpenKey(pcore, versionStr, 0, access)
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
111 installpath = winreg.QueryValue(version, "InstallPath")
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
112 # Look for pyinstaller.exe
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
113 exe = os.path.join(installpath, "Scripts", "pyinstaller.exe")
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
114 if os.access(exe, os.X_OK):
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
115 exes.append(exe)
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
116 # Look for pyi-makespec.exe
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
117 exe = os.path.join(installpath, "Scripts", "pyi-makespec.exe")
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
118 if os.access(exe, os.X_OK):
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
119 exes.append(exe)
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
120 return exes
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
121
2
5109c484bc49 Some fixes for Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
122 versionSuffixes = ["", "-32", "-64"]
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
123 for minorVersion in minorVersions:
2
5109c484bc49 Some fixes for Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
124 for versionSuffix in versionSuffixes:
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
125 versionStr = "{0}.{1}{2}".format(
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
126 majorVersion, minorVersion, versionSuffix
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
127 )
2
5109c484bc49 Some fixes for Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
128 exePaths = getExePath(
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
129 winreg.HKEY_CURRENT_USER,
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
130 winreg.KEY_WOW64_32KEY | winreg.KEY_READ,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
131 versionStr,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
132 )
2
5109c484bc49 Some fixes for Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
133 for exePath in exePaths:
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
134 executables.add(exePath)
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
135
2
5109c484bc49 Some fixes for Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
136 exePaths = getExePath(
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
137 winreg.HKEY_LOCAL_MACHINE,
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
138 winreg.KEY_WOW64_32KEY | winreg.KEY_READ,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
139 versionStr,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
140 )
2
5109c484bc49 Some fixes for Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
141 for exePath in exePaths:
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
142 executables.add(exePath)
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
143
2
5109c484bc49 Some fixes for Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
144 # Even on Intel 64-bit machines it's 'AMD64'
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
145 if platform.machine() == "AMD64":
2
5109c484bc49 Some fixes for Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
146 exePaths = getExePath(
5109c484bc49 Some fixes for Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
147 winreg.HKEY_CURRENT_USER,
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
148 winreg.KEY_WOW64_64KEY | winreg.KEY_READ,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
149 versionStr,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
150 )
2
5109c484bc49 Some fixes for Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
151 for exePath in exePaths:
5109c484bc49 Some fixes for Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
152 executables.add(exePath)
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
153
2
5109c484bc49 Some fixes for Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
154 exePaths = getExePath(
5109c484bc49 Some fixes for Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
155 winreg.HKEY_LOCAL_MACHINE,
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
156 winreg.KEY_WOW64_64KEY | winreg.KEY_READ,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
157 versionStr,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
158 )
2
5109c484bc49 Some fixes for Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
159 for exePath in exePaths:
5109c484bc49 Some fixes for Windows.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1
diff changeset
160 executables.add(exePath)
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
161
27
25ff8953e335 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
162 if not executables and majorVersion >= 3:
25ff8953e335 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
163 # check the PATH environment variable if nothing was found
25ff8953e335 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
164 # Python 3 only
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
165 path = Utilities.getEnvironmentEntry("PATH")
27
25ff8953e335 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
166 if path:
25ff8953e335 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
167 dirs = path.split(os.pathsep)
25ff8953e335 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
168 for directory in dirs:
25ff8953e335 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
169 for prog in ("pyinstaller.exe", "pyi-makespec.exe"):
25ff8953e335 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
170 exe = os.path.join(directory, prog)
25ff8953e335 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
171 if os.access(exe, os.X_OK):
25ff8953e335 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
172 executables.add(exe)
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
173 else:
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
174 #
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
175 # Linux, Unix ...
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
176 pyinstallerScripts = ["pyinstaller", "pyi-makespec"]
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
177
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
178 # There could be multiple pyinstaller executables in the path
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
179 # e.g. for different python variants
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
180 path = Utilities.getEnvironmentEntry("PATH")
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
181 # environment variable not defined
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
182 if path is None:
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
183 return []
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
184
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
185 # step 1: determine possible candidates
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
186 exes = []
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
187 dirs = path.split(os.pathsep)
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
188 for directory in dirs:
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
189 for pyinstallerScript in pyinstallerScripts:
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
190 exe = os.path.join(directory, pyinstallerScript)
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
191 if os.access(exe, os.X_OK):
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
192 exes.append(exe)
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
193
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
194 # step 2: determine the Python variant
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
195 _exePy3 = set()
6
0f0f1598fc4a Continued implementing the PyInstaller interface (implemented the pyi-makespec function).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5
diff changeset
196 versionArgs = ["-c", "import sys; print(sys.version_info[0])"]
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
197 for exe in exes:
32
efd82d7dea1f Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
198 with open(exe, "r") as f:
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
199 line0 = f.readline()
32
efd82d7dea1f Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
200 program = line0.replace("#!", "").strip()
efd82d7dea1f Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
201 process = QProcess()
efd82d7dea1f Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
202 process.start(program, versionArgs)
efd82d7dea1f Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
203 process.waitForFinished(5000)
efd82d7dea1f Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
204 # get a QByteArray of the output
efd82d7dea1f Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
205 versionBytes = process.readAllStandardOutput()
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
206 versionStr = str(versionBytes, encoding="utf-8").strip()
32
efd82d7dea1f Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
207 if versionStr == "3":
efd82d7dea1f Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
208 _exePy3.add(exe)
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
209
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
210 executables = _exePy3
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
211
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
212 # sort items, the probably newest topmost
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
213 executables = list(executables)
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
214 executables.sort(reverse=True)
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
215 return executables
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
216
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
217
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
218 def _checkProgram():
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
219 """
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
220 Restricted function to check the availability of pyinstaller.
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
221
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
222 @return flag indicating availability
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
223 @rtype bool
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
224 """
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
225 global error, exePy3
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
226
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
227 exePy3 = _findExecutable(3)
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
228 if not exePy3:
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
229 if Utilities.isWindowsPlatform():
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
230 error = QCoreApplication.translate(
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
231 "PyInstallerPlugin",
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
232 "The pyinstaller.exe executable could not be found.",
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
233 )
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
234 else:
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
235 error = QCoreApplication.translate(
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
236 "PyInstallerPlugin", "The pyinstaller executable could not be found."
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
237 )
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
238 return False
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
239 else:
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
240 return True
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
241
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
242
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
243 class PyInstallerPlugin(QObject):
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
244 """
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
245 Class implementing the PyInstaller interface plug-in.
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
246 """
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
247
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
248 def __init__(self, ui):
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
249 """
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
250 Constructor
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
251
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
252 @param ui reference to the user interface object
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
253 @type UI.UserInterface
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
254 """
35
d9b3cadaf707 Implemented some code simplifications.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 34
diff changeset
255 super().__init__(ui)
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
256 self.__ui = ui
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
257
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
258 self.__initialize()
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
259 _checkProgram()
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
260
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
261 self.__translator = None
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
262 self.__loadTranslator()
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
263
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
264 def __initialize(self):
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
265 """
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
266 Private slot to (re)initialize the plug-in.
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
267 """
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
268 self.__projectActs = []
21
519158f78a41 Added a separator to the project packagers menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
269 self.__projectSeparator = None
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
270
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
271 def activate(self):
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
272 """
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
273 Public method to activate this plug-in.
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
274
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
275 @return tuple of None and activation status
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
276 @rtype tuple of (None, bool)
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
277 """
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
278 global error
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
279
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
280 # There is already an error, don't activate
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
281 if error:
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
282 return None, False
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
283
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
284 # pyinstaller interface is only activated if it is available
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
285 if not _checkProgram():
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
286 return None, False
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
287
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
288 # clear previous error
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
289 error = ""
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
290
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
291 project = ericApp().getObject("Project")
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
292 menu = project.getMenu("Packagers")
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
293 if menu:
21
519158f78a41 Added a separator to the project packagers menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
294 self.__projectSeparator = menu.addSeparator()
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
295
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
296 # Execute PyInstaller
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
297 act = EricAction(
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
298 self.tr("Execute PyInstaller"),
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
299 self.tr("Execute Py&Installer"),
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
300 0,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
301 0,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
302 self,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
303 "packagers_pyinstaller_run",
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
304 )
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
305 act.setStatusTip(
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
306 self.tr("Generate a distribution package using PyInstaller")
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
307 )
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
308 act.setWhatsThis(
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
309 self.tr(
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
310 """<b>Execute PyInstaller</b>"""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
311 """<p>Generate a distribution package using PyInstaller."""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
312 """ The command is executed in the project path. All"""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
313 """ files and directories must be given as absolute paths or"""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
314 """ as paths relative to the project path.</p>"""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
315 )
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
316 )
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
317 act.triggered.connect(self.__pyinstaller)
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
318 menu.addAction(act)
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
319 self.__projectActs.append(act)
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
320
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
321 # Execute pyi-makespec
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
322 act = EricAction(
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
323 self.tr("Make PyInstaller Spec File"),
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
324 self.tr("Make PyInstaller &Spec File"),
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
325 0,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
326 0,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
327 self,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
328 "packagers_pyinstaller_spec",
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
329 )
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
330 act.setStatusTip(self.tr("Generate a spec file to be used by PyInstaller"))
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
331 act.setWhatsThis(
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
332 self.tr(
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
333 """<b>Make PyInstaller Spec File</b>"""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
334 """<p>Generate a spec file to be used by PyInstaller."""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
335 """ The command is executed in the project path. All"""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
336 """ files and directories must be given as absolute paths or"""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
337 """ as paths relative to the project path.</p>"""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
338 )
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
339 )
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
340 act.triggered.connect(self.__pyiMakeSpec)
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
341 menu.addAction(act)
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
342 self.__projectActs.append(act)
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
343
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
344 # clean the pyinstaller created directories
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
345 act = EricAction(
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
346 self.tr("Clean PyInstaller"),
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
347 self.tr("&Clean PyInstaller"),
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
348 0,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
349 0,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
350 self,
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
351 "packagers_pyinstaller_clean",
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
352 )
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
353 act.setStatusTip(self.tr("Remove the PyInstaller created directories"))
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
354 act.setWhatsThis(
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
355 self.tr(
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
356 """<b>Clean PyInstaller</b>"""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
357 """<p>Remove the PyInstaller created directories (dist and"""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
358 """ build). These are subdirectories within the project"""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
359 """ path.</p>"""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
360 )
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
361 )
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
362 act.triggered.connect(self.__pyinstallerCleanup)
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
363 menu.addAction(act)
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
364 self.__projectActs.append(act)
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
365
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
366 project.addEricActions(self.__projectActs)
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
367 project.showMenu.connect(self.__projectShowMenu)
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
368
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
369 return None, True
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
370
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
371 def deactivate(self):
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
372 """
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
373 Public method to deactivate this plug-in.
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
374 """
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
375 menu = ericApp().getObject("Project").getMenu("Packagers")
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
376 if menu:
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
377 for act in self.__projectActs:
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
378 menu.removeAction(act)
21
519158f78a41 Added a separator to the project packagers menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
379 if self.__projectSeparator:
519158f78a41 Added a separator to the project packagers menu.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 18
diff changeset
380 menu.removeAction(self.__projectSeparator)
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
381
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
382 ericApp().getObject("Project").removeEricActions(self.__projectActs)
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
383
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
384 self.__initialize()
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
385
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
386 def __projectShowMenu(self, menuName, menu):
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
387 """
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
388 Private slot called, when the the project menu or a submenu is
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
389 about to be shown.
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
390
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
391 @param menuName name of the menu to be shown
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
392 @type str
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
393 @param menu reference to the menu
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
394 @type QMenu
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
395 """
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
396 if menuName == "Packagers":
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
397 enable = ericApp().getObject("Project").getProjectLanguage() == "Python3"
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
398 for act in self.__projectActs:
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
399 act.setEnabled(enable)
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
400
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
401 def __loadTranslator(self):
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
402 """
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
403 Private method to load the translation file.
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
404 """
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
405 if self.__ui is not None:
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
406 loc = self.__ui.getLocale()
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
407 if loc and loc != "C":
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
408 locale_dir = os.path.join(
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
409 os.path.dirname(__file__), "PyInstallerInterface", "i18n"
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
410 )
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
411 translation = "pyinstaller_{0}".format(loc)
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
412 translator = QTranslator(None)
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
413 loaded = translator.load(translation, locale_dir)
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
414 if loaded:
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
415 self.__translator = translator
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
416 ericApp().installTranslator(self.__translator)
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
417 else:
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
418 print(
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
419 "Warning: translation file '{0}' could not be"
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
420 " loaded.".format(translation)
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
421 )
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
422 print("Using default.")
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
423
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
424 @pyqtSlot()
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
425 def __pyinstaller(self):
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
426 """
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
427 Private slot to execute the pyinstaller command for the current
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
428 project.
1
f7788bc8c08d Implemented support for the programs dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 0
diff changeset
429 """
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
430 project = ericApp().getObject("Project")
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
431 majorVersionStr = project.getProjectLanguage()
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
432 if majorVersionStr == "Python3":
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
433 executables = [
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
434 f for f in exePy3 if f.endswith(("pyinstaller", "pyinstaller.exe"))
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
435 ]
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
436 if not executables:
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
437 EricMessageBox.critical(
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
438 self.__ui,
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
439 self.tr("pyinstaller"),
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
440 self.tr(
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
441 """The pyinstaller executable could not be""" """ found."""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
442 ),
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
443 )
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
444 return
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
445
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
446 # check if all files saved and errorfree before continue
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
447 if not project.checkAllScriptsDirty(reportSyntaxErrors=True):
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
448 return
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
449
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
450 from PyInstallerInterface.PyInstallerConfigDialog import (
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
451 PyInstallerConfigDialog,
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
452 )
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
453
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
454 params = project.getData("PACKAGERSPARMS", "PYINSTALLER")
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
455 dlg = PyInstallerConfigDialog(
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
456 project, executables, params, mode="installer"
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
457 )
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
458 if dlg.exec() == QDialog.DialogCode.Accepted:
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
459 args, params, script = dlg.generateParameters()
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
460 project.setData("PACKAGERSPARMS", "PYINSTALLER", params)
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
461
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
462 # now do the call
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
463 from PyInstallerInterface.PyInstallerExecDialog import (
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
464 PyInstallerExecDialog,
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
465 )
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
466
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
467 dia = PyInstallerExecDialog("pyinstaller")
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
468 dia.show()
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
469 res = dia.start(args, params, project, script)
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
470 if res:
32
efd82d7dea1f Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
471 dia.exec()
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
472
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
473 @pyqtSlot()
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
474 def __pyiMakeSpec(self):
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
475 """
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
476 Private slot to execute the pyi-makespec command for the current
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
477 project to generate a spec file to be used by pyinstaller.
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
478 """
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
479 project = ericApp().getObject("Project")
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
480 majorVersionStr = project.getProjectLanguage()
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
481 if majorVersionStr == "Python3":
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
482 executables = [
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
483 f for f in exePy3 if f.endswith(("pyi-makespec", "pyi-makespec.exe"))
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
484 ]
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
485 if not executables:
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
486 EricMessageBox.critical(
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
487 self.__ui,
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
488 self.tr("pyi-makespec"),
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
489 self.tr(
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
490 """The pyi-makespec executable could not be""" """ found."""
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
491 ),
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
492 )
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
493 return
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
494
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
495 # check if all files saved and errorfree before continue
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
496 if not project.checkAllScriptsDirty(reportSyntaxErrors=True):
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
497 return
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
498
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
499 from PyInstallerInterface.PyInstallerConfigDialog import (
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
500 PyInstallerConfigDialog,
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
501 )
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
502
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
503 params = project.getData("PACKAGERSPARMS", "PYINSTALLER")
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
504 dlg = PyInstallerConfigDialog(project, executables, params, mode="spec")
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
505 if dlg.exec() == QDialog.DialogCode.Accepted:
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
506 args, params, script = dlg.generateParameters()
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
507 project.setData("PACKAGERSPARMS", "PYINSTALLER", params)
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
508
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
509 # now do the call
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
510 from PyInstallerInterface.PyInstallerExecDialog import (
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
511 PyInstallerExecDialog,
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
512 )
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
513
28
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
514 dia = PyInstallerExecDialog("pyinstaller")
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
515 dia.show()
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
516 res = dia.start(args, params, project, script)
3c8dbc198753 Removed support for Python2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 27
diff changeset
517 if res:
32
efd82d7dea1f Changed calls of exec_() into exec().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 30
diff changeset
518 dia.exec()
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
519
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
520 @pyqtSlot()
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
521 def __pyinstallerCleanup(self):
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
522 """
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
523 Private slot to remove the directories created by pyinstaller.
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
524 """
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
525 project = ericApp().getObject("Project")
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
526
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
527 from PyInstallerInterface.PyInstallerCleanupDialog import (
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
528 PyInstallerCleanupDialog,
27
25ff8953e335 Added code to search the executable in virtual environment as well on Windows platforms.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 26
diff changeset
529 )
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
530
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
531 dlg = PyInstallerCleanupDialog()
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
532 if dlg.exec() == QDialog.DialogCode.Accepted:
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
533 removeDirs = dlg.getDirectories()
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
534 for directory in removeDirs:
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
535 rd = os.path.join(project.getProjectPath(), directory)
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
536 shutil.rmtree(rd, ignore_errors=True)
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
537
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
538
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
539 def installDependencies(pipInstall):
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
540 """
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
541 Function to install dependencies of this plug-in.
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
542
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
543 @param pipInstall function to be called with a list of package names.
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
544 @type function
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
545 """
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
546 try:
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
547 import PyInstaller # __IGNORE_WARNING__
38
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
548 except ImportError:
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
549 pipInstall(["pyinstaller"])
fc9ef9dcd51a Ported the plug-in to PyQt6 for eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 35
diff changeset
550
46
ccd14067e6a2 Reformatted source code with 'Black'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 44
diff changeset
551
3
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
552 #
eb2d30b4d34e Continued implementing the PyInstaller interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2
diff changeset
553 # eflag: noqa = M801

eric ide

mercurial