├── .idea
├── .gitignore
├── AutoNuitka.iml
├── codeStyles
│ └── codeStyleConfig.xml
├── inspectionProfiles
│ ├── Project_Default.xml
│ └── profiles_settings.xml
├── misc.xml
├── modules.xml
└── vcs.xml
├── EasyNuitka.py
├── README.MD
├── exe
└── EasyNuitka.exe
├── icon
├── Nuitka.ico
└── Nuitka.png
├── mainui.py
├── mainui.ui
├── pic
├── EasyNuitka.png
└── Nuitka.png
└── src
├── EasyNuitka.py
├── mainui.py
└── mainui.ui
/.idea/.gitignore:
--------------------------------------------------------------------------------
1 | # Default ignored files
2 | /shelf/
3 | /workspace.xml
4 |
--------------------------------------------------------------------------------
/.idea/AutoNuitka.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/codeStyles/codeStyleConfig.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/Project_Default.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/.idea/inspectionProfiles/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/EasyNuitka.py:
--------------------------------------------------------------------------------
1 | # This is a sample Python script.
2 | import os
3 | import sys
4 | import threading
5 | from PyQt5.QtCore import Qt
6 | from PyQt5 import QtWidgets,QtGui
7 | from PyQt5.QtGui import QIcon
8 | from PyQt5.QtWidgets import QApplication, QStyleFactory
9 | import nuitka
10 | import mainui
11 | import subprocess
12 | import shutil
13 |
14 |
15 | class MainGui(mainui.Ui_MainWindow, QtWidgets.QMainWindow):
16 | def __init__(self,parent=None):
17 | super(MainGui, self).__init__(parent)
18 | self.setupUi(self)
19 | self.setWindowTitle( "EasyNuitka")
20 | self.setWindowIcon(QIcon("./icon/Nuitka.png"))
21 | self.pushButton.clicked.connect(self.choose_main_py)
22 | self.pushButton_2.clicked.connect(self.set_output_path)
23 | self.pushButton_7.clicked.connect(self.Multithreading_command)
24 | self.pushButton_4.clicked.connect(self.follow_import_to)
25 | self.pushButton_12.clicked.connect(self.follow_import_to_remove)
26 | self.pushButton_20.clicked.connect(self.set_icon)
27 | self.pushButton_19.clicked.connect(self.remove_icon)
28 | self.pushButton_9.clicked.connect(self.quit)
29 | self.pushButton_3.clicked.connect(self.nofollow_import_to)
30 | self.pushButton_10.clicked.connect(self.nofollow_import_to_remove)
31 | self.pushButton_17.clicked.connect(self.include_package_remove)
32 | self.chekbox_clicked_init()
33 | self.command_dict={}
34 | self.command_str=None
35 | self.main_name=None
36 | self.outputpath="./"
37 | self.follow_import_to_document_str=""
38 | self.nofollow_import_to_document_str=""
39 | self.iconname=None
40 | self.iconpath=""
41 | self.compile_module_path=None
42 | self.statusbar.showMessage("The software runs normally")
43 | def choose_main_py(self):
44 | try:
45 | if not self.checkBox_7.isChecked():
46 | file = QtWidgets.QFileDialog.getOpenFileName(self,
47 | "choose main.py", "./",
48 | "All Files (*.py);;Text Files (*.py)")
49 | self.filenpath = file[0]
50 | self.lineEdit.setText(file[0])
51 | self.main_name = self.lineEdit.setText(file[0])
52 | self.filename = self.filenpath.split("/")[-1]
53 | self.filenpath = self.filenpath.replace(self.filename, "")
54 | self.dish = self.filenpath[0:2]
55 | self.statusbar.showMessage("File selected successfully")
56 |
57 | else :
58 | directory = QtWidgets.QFileDialog.getExistingDirectory(self, "choose compile module dir", "./")
59 | self.compile_module_path=directory
60 | self.lineEdit.setText(directory)
61 | self.lineEdit_9.setText(self.compile_module_path.split("/")[-1])
62 | self.statusbar.showMessage("Output directory set successfully")
63 |
64 |
65 | except Exception as e:
66 | self.statusbar.showMessage("File selection failed")
67 | print(e)
68 | def set_output_path(self):
69 | try:
70 | directory = QtWidgets.QFileDialog.getExistingDirectory(self, "getExistingDirectory", "./")
71 | self.outputpath=directory
72 | self.lineEdit_2.setText(directory)
73 | self.statusbar.showMessage("Output directory set successfully")
74 | except Exception as e:
75 | self.statusbar.showMessage("Output directory setting failed")
76 | pass
77 | def get_package_method(self):
78 | #--follow-imports
79 | if self.checkBox.isChecked():
80 | self.lineEdit_3.setEnabled(False)
81 | self.lineEdit_4.setEnabled(False)
82 | self.checkBox_8.setEnabled(False)
83 |
84 | self.command_dict[self.checkBox]="--follow-imports"
85 | #print(self.command_dict)
86 | elif not self.checkBox.isChecked():
87 | self.lineEdit_3.setEnabled(True)
88 | self.lineEdit_4.setEnabled(True)
89 | self.checkBox_8.setEnabled(True)
90 | self.command_dict[self.checkBox] = ""
91 | #--nofollow-imports
92 | if self.checkBox_8.isChecked():
93 | self.checkBox.setEnabled(False)
94 | self.command_dict[self.checkBox_8] = "--nofollow-imports"
95 | #print(self.command_dict)
96 | elif not self.checkBox_8.isChecked():
97 | self.checkBox.setEnabled(True)
98 | self.command_dict[self.checkBox_8] = ""
99 | #--module
100 | if self.checkBox_7.isChecked():
101 | self.checkBox.setEnabled(False)
102 | self.checkBox_8.setEnabled(False)
103 | self.checkBox_3.setEnabled(False)
104 | self.checkBox_4.setEnabled(False)
105 | self.lineEdit_3.setEnabled(False)
106 | self.lineEdit_4.setEnabled(False)
107 | self.lineEdit_5.setEnabled(False)
108 | self.lineEdit_8.setEnabled(False)
109 | self.lineEdit_6.setEnabled(False)
110 | self.lineEdit_9.setEnabled(True)
111 | self.radioButton.setEnabled(False)
112 | self.radioButton_2.setEnabled(False)
113 | self.command_dict[self.checkBox_7] = "--module"
114 | #print(self.command_dict)
115 | elif not self.checkBox_7.isChecked():
116 | self.checkBox_3.setEnabled(True)
117 | self.checkBox_4.setEnabled(True)
118 | self.lineEdit_3.setEnabled(True)
119 | self.lineEdit_4.setEnabled(True)
120 | self.lineEdit_5.setEnabled(True)
121 | self.lineEdit_8.setEnabled(True)
122 | self.lineEdit_6.setEnabled(True)
123 | self.lineEdit_9.setEnabled(False)
124 | self.radioButton.setEnabled(True)
125 | self.radioButton_2.setEnabled(True)
126 | self.checkBox_3.setEnabled(True)
127 | self.checkBox_4.setEnabled(True)
128 | if self.checkBox.isChecked():
129 | self.checkBox_8.setEnabled(False)
130 | if self.checkBox_8.isChecked():
131 | self.checkBox.setEnabled(False)
132 |
133 | self.command_dict[self.checkBox_7] = ""
134 | #--standalone
135 | if self.checkBox_3.isChecked():
136 | self.checkBox_4.setEnabled(False)
137 | self.checkBox_7.setEnabled(False)
138 | self.command_dict[self.checkBox_3] = "--standalone"
139 | elif not self.checkBox_3.isChecked() and not self.checkBox_7.isChecked():
140 | self.checkBox_7.setEnabled(True)
141 | self.checkBox_4.setEnabled(True)
142 | self.command_dict[self.checkBox_3] = ""
143 | #--onefile
144 | if self.checkBox_4.isChecked():
145 | self.checkBox_3.setEnabled(False)
146 | self.checkBox_7.setEnabled(False)
147 | self.command_dict[self.checkBox_4] = "--onefile"
148 | elif not self.checkBox_4.isChecked() and not self.checkBox_7.isChecked() :
149 | self.checkBox_3.setEnabled(True)
150 | if not self.checkBox_3.isChecked():
151 | self.checkBox_7.setEnabled(True)
152 | self.command_dict[self.checkBox_4] = ""
153 |
154 | #--mingw64
155 | if self.checkBox_2.isChecked():
156 | self.checkBox_10.setEnabled(False)
157 | self.command_dict[self.checkBox_2] = "--mingw64"
158 | else:
159 | self.checkBox_10.setEnabled(True)
160 | self.command_dict[self.checkBox_2] = ""
161 | #--show-memory
162 | if self.checkBox_5.isChecked():
163 | self.command_dict[self.checkBox_5] = "--show-memory"
164 | else:
165 | self.command_dict[self.checkBox_5] = ""
166 | #--show-progress
167 | if self.checkBox_6.isChecked():
168 | self.command_dict[self.checkBox_6] = "--show-progress"
169 | else:
170 | self.command_dict[self.checkBox_6] = ""
171 | #-msvc64
172 | if self.checkBox_10.isChecked():
173 | self.checkBox_2.setEnabled(False)
174 | self.command_dict[self.checkBox_10] = "-msvc64"
175 | else:
176 | self.checkBox_2.setEnabled(True)
177 | self.command_dict[self.checkBox_10] = ""
178 | #--include-plugin-pyqt5
179 | if self.checkBox_9.isChecked():
180 | self.command_dict[self.checkBox_9] = "--plugin-enable=pyqt5"
181 | else:
182 | self.command_dict[self.checkBox_9] = ""
183 | #--include-plugin-numpy
184 | if self.checkBox_17.isChecked():
185 | self.command_dict[self.checkBox_17] = "--plugin-enable=numpy"
186 | else:
187 | self.command_dict[self.checkBox_17] = ""
188 | #--include-plugin-torch
189 | if self.checkBox_20.isChecked():
190 | self.command_dict[self.checkBox_20] = "--plugin-enable=torch"
191 | else:
192 | self.command_dict[self.checkBox_20] = ""
193 | #--include-plugin-matplotlib
194 | if self.checkBox_11.isChecked():
195 | self.command_dict[self.checkBox_11] = "--plugin-enable=matplotlib"
196 | else:
197 | self.command_dict[self.checkBox_11] = ""
198 | #--include-plugin-pyqt6
199 | if self.checkBox_13.isChecked():
200 | self.command_dict[self.checkBox_13] = "--plugin-enable=pyqt6"
201 | else:
202 | self.command_dict[self.checkBox_13] = ""
203 | #--include-plugin-pyside2
204 | if self.checkBox_15.isChecked():
205 | self.command_dict[self.checkBox_15] = "--plugin-enable=pyside2"
206 | else:
207 | self.command_dict[self.checkBox_15] = ""
208 | #--include-plugin-pyside6
209 | if self.checkBox_12.isChecked():
210 | self.command_dict[self.checkBox_12] = "--plugin-enable=pyside6"
211 | else:
212 | self.command_dict[self.checkBox_12] = ""
213 | #--include-plugin-no-qt5
214 | if self.checkBox_18.isChecked():
215 | self.command_dict[self.checkBox_18] = "--plugin-enable=no-qt5"
216 | else:
217 | self.command_dict[self.checkBox_18] = ""
218 | #--include-plugin-upx
219 | if self.checkBox_22.isChecked():
220 | self.command_dict[self.checkBox_22] = "--plugin-enable=upx"
221 | else:
222 | self.command_dict[self.checkBox_22] = ""
223 | #--include-plugin-tensorflow
224 | if self.checkBox_19.isChecked():
225 | self.command_dict[self.checkBox_19] = "--plugin-enable=tensorflow"
226 | else:
227 | self.command_dict[self.checkBox_19] = ""
228 | #--include-plugin-pywebview
229 | if self.checkBox_25.isChecked():
230 | self.command_dict[self.checkBox_25] = "--plugin-enable=pywebview"
231 | else:
232 | self.command_dict[self.checkBox_25] = ""
233 | #--include-plugin-tk-inter
234 | if self.checkBox_24.isChecked():
235 | self.command_dict[self.checkBox_24] = "--plugin-enable=tk-inter"
236 | else:
237 | self.command_dict[self.checkBox_24] = ""
238 | #--include-plugin-trio
239 | if self.checkBox_23.isChecked():
240 | self.command_dict[self.checkBox_23] = "--plugin-enable=trio"
241 | else:
242 | self.command_dict[self.checkBox_23] = ""
243 | #--include-plugin-multiprocessing
244 | if self.checkBox_14.isChecked():
245 | self.command_dict[self.checkBox_14] = "--plugin-enable=multiprocessing"
246 | else:
247 | self.command_dict[self.checkBox_14] = ""
248 | #--windows-disable-console
249 | if self.radioButton.isChecked():
250 | self.command_dict[self.radioButton] = "--windows-disable-console"
251 | if self.radioButton_2.isChecked():
252 | self.command_dict[self.radioButton_2] = ""
253 | #Default Enabled
254 | self.lineEdit_5.setEnabled(False)
255 | self.lineEdit_8.setEnabled(False)
256 |
257 | self.statusbar.showMessage("Selection succeeded")
258 | def Multithreading_command(self):
259 | t=threading.Thread(target=self.excute_command,args=())
260 | t.start()
261 | self.statusbar.showMessage("packaging is finishing")
262 | def excute_command(self):
263 | try:
264 | self.command_str="python -m nuitka "
265 | for command in self.command_dict.keys():
266 | if self.command_dict[command]=="":
267 | continue
268 | if self.command_dict[command]=="--module":
269 | self.command_dict[command]="--module "+self.compile_module_path.split("/")[-1]+" "+"--include-package="+\
270 | self.lineEdit_9.text()
271 | self.command_str+=self.command_dict[command]+" "
272 | if self.follow_import_to_document_str!="":
273 | self.command_str += "--follow-import-to=" + self.follow_import_to_document_str[0:len(self.follow_import_to_document_str)-1] + " "
274 | if self.follow_import_to_document_str!="":
275 | self.command_str+="--nofollow-import-to="+self.follow_import_to_document_str+" "
276 | self.command_str+="--output-dir="+self.outputpath+" "
277 | if self.iconname!=None:
278 | self.command_str+="--windows-icon-from-ico="+self.iconname+" "
279 | if not self.checkBox_7.isChecked():
280 | self.command_str+=self.filename
281 |
282 | print(self.command_str)
283 | if not self.checkBox_7.isChecked():
284 | os.chdir(self.filenpath)
285 | else:
286 | os.chdir(self.compile_module_path)
287 | os.chdir("../")
288 | os.system(self.command_str)
289 | self.statusbar.showMessage("Please wait to start packaging......")
290 | except Exception as e:
291 | self.statusbar.showMessage(e)
292 | #print(e)
293 |
294 | def chekbox_clicked_init(self):
295 | self.package_method=[]
296 | self.checkBox_dict = {self.checkBox: "--follow-imports", self.checkBox_8: "--nofollow-imports",
297 | self.checkBox_7: "--module",
298 | self.checkBox_3: "--standalone", self.checkBox_4: "--onefile",
299 | self.checkBox_2: "--mingw64", self.checkBox_5: "--show-memory",
300 | self.checkBox_6: "--show-progress", self.checkBox_10: "-msvc64",
301 | self.checkBox_9: "--include-plugin-pyqt5",
302 | self.checkBox_17: "--include-plugin-numpy",self.checkBox_20:"--include-plugin-torch",
303 | self.checkBox_11:"--include-plugin-matplotlib",self.checkBox_13:"--include-plugin-pyqt6",
304 | self.checkBox_15:"--include-plugin-pyside2",self.checkBox_12:"--include-plugin-pyside6",
305 | self.checkBox_18:"--include-plugin-no-qt5",self.checkBox_22:"--include-plugin-upx",
306 | self.checkBox_19:"--include-plugin-tensorflow",self.checkBox_25:"--include-plugin-pywebview",
307 | self.checkBox_24:"--include-plugin-tk-inter",self.checkBox_23:"--include-plugin-trio",
308 | self.checkBox_14:"--include-plugin-multiprocessing",self.radioButton:"--windows-disable-console",
309 | self.radioButton_2:""}
310 | for check in self.checkBox_dict.keys():
311 | try:
312 | check.clicked.connect(self.get_package_method)
313 | except:
314 | pass
315 | self.lineEdit_9.setEnabled(False)
316 | def nofollow_import_to(self):
317 | self.follow_import_to_document_str=self.lineEdit_3.text()
318 | self.statusbar.showMessage("add module to nofollow_import_to ")
319 | def nofollow_import_to_remove(self):
320 | self.lineEdit_3.setText("Enter module/package ;Separate them with commas")
321 | self.follow_import_to_document_str=""
322 | self.statusbar.showMessage("Removed")
323 | def follow_import_to(self):
324 | try:
325 | directory = QtWidgets.QFileDialog.getExistingDirectory(self, "getExistingDirectory", "./")
326 | self.follow_import_to_document = directory.split("/")[-1]
327 | self.follow_import_to_document_str+=self.follow_import_to_document+","
328 | self.lineEdit_4.setText(self.follow_import_to_document_str)
329 | except Exception as e:
330 | print(e)
331 | pass
332 | def follow_import_to_remove(self):
333 | try:
334 | self.lineEdit_4.setText("Select the folder you want to compile")
335 | except Exception as e:
336 | self.statusbar.showMessage("Removed")
337 | pass
338 | def include_data_files(self):
339 | pass
340 | def set_icon(self):
341 | try:
342 | if not self.checkBox_7.isChecked():
343 | file = QtWidgets.QFileDialog.getOpenFileName(self,
344 | "getOpenFileName", "./",
345 | "All Files (*);;Text Files (*)")
346 | self.iconpath = file[0]
347 | self.lineEdit_6.setText(self.iconpath)
348 | src = self.iconpath
349 | dist = self.filenpath + src.split("/")[-1]
350 | if not os.path.exists(dist):
351 | shutil.copyfile(src, dist)
352 | self.iconname = src.split("/")[-1]
353 |
354 | except Exception as e:
355 | print(e)
356 | def remove_icon(self):
357 | self.lineEdit_6.setText("Select icon")
358 | self.statusbar.showMessage("Removed")
359 |
360 | def include_data_files(self):
361 | try:
362 | file = QtWidgets.QFileDialog.getOpenFileName(self,
363 | "getOpenFileName", "./",
364 | "All Files (*);;Text Files (*)")
365 | self.include_data_files=file[0]
366 | except Exception as e:
367 | pass
368 |
369 | def include_package_remove(self):
370 | self.lineEdit_9.setText("Default to the entire module")
371 | def quit(self):
372 | sys.exit()
373 | # Press the green button in the gutter to run the script.
374 | if __name__ == '__main__':
375 | QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
376 | app = QtWidgets.QApplication(sys.argv)
377 | QApplication.setStyle(QStyleFactory.create('Fusion'))
378 | win = MainGui()
379 | win.show()
380 | sys.exit(app.exec_())
381 |
382 | # See PyCharm help at https://www.jetbrains.com/help/pycharm/
383 |
--------------------------------------------------------------------------------
/README.MD:
--------------------------------------------------------------------------------
1 | **********
2 | EasyNuitka User Manual
3 | **********
4 |
5 | **********
6 | Overview
7 | **********
8 | EasyNuitka is a Nuitka-based packaging tool with a graphical interface
9 |
10 |
11 | 
12 | *******
13 | Usage
14 | *******
15 |
16 | Requirements
17 | ============
18 |
19 | - C Compiler: You need a compiler with support for C11 or alternatively
20 | for C++03 [#]_
21 |
22 | Currently this means, you need to use one of these compilers:
23 |
24 | - The MinGW64 C11 compiler on Windows, must be based on gcc 11.2 or
25 | higher. It will be *automatically* downloaded if no usable C
26 | compiler is found, which is the recommended way of installing it,
27 | as Nuitka will also upgrade it for you.
28 |
29 | - Visual Studio 2022 or higher on Windows [#]_, older versions will
30 | work but only supported for commercial users. Configure to use the
31 | English language pack for best results (Nuitka filters away
32 | garbage outputs, but only for English language). It will be used
33 | by default if installed.
34 |
35 | - On all other platforms, the ``gcc`` compiler of at least version
36 | 5.1, and below that the ``g++`` compiler of at least version 4.4
37 | as an alternative.
38 |
39 | - The ``clang`` compiler on macOS X and most FreeBSD architectures.
40 |
41 | - On Windows the ``clang-cl`` compiler on Windows can be used if
42 | provided by the Visual Studio installer.
43 |
44 | - Python: Version 2.6, 2.7 or 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10
45 |
46 | .. important::
47 |
48 | For Python 3.3/3.4 and *only* those, we need other Python version
49 | as a *compile time* dependency.
50 |
51 | Nuitka itself is fully compatible with all listed versions, but
52 | Scons as an internally used tool is not.
53 |
54 | For these versions, you *need* a Python2 or Python 3.5 or higher
55 | installed as well, but only during the compile time only. That is
56 | for use with Scons (which orchestrates the C compilation), which
57 | does not support the same Python versions as Nuitka.
58 |
59 | In addition, on Windows, Python2 cannot be used because
60 | ``clcache`` does not work with it, there a Python 3.5 or higher
61 | needs to be installed.
62 |
63 | Nuitka finds these needed Python versions (e.g. on Windows via
64 | registry) and you shouldn't notice it as long as they are
65 | installed.
66 |
67 | Increasingly, other functionality is available when another Python
68 | has a certain package installed. For example, onefile compression
69 | will work for a Python 2.x when another Python is found that has
70 | the ``zstandard`` package installed.
71 |
72 | .. admonition:: Moving binaries to other machines
73 |
74 | The created binaries can be made executable independent of the
75 | Python installation, with ``--standalone`` and ``--onefile``
76 | options.
77 |
78 | .. admonition:: Binary filename suffix
79 |
80 | The created binaries have an ``.exe`` suffix on Windows. On other
81 | platforms they have no suffix for standalone mode, or ``.bin``
82 | suffix, that you are free to remove or change, or specify with the
83 | ``-o`` option.
84 |
85 | The suffix for acceleration mode is added just to be sure that the
86 | original script name and the binary name do not ever collide, so
87 | we can safely do an overwrite without destroying the original
88 | source file.
89 |
90 | .. admonition:: It **has to** be CPython, Anaconda Python.
91 |
92 | You need the standard Python implementation, called "CPython", to
93 | execute Nuitka, because it is closely tied to implementation
94 | details of it.
95 |
96 | .. admonition:: It **cannot be** from Windows app store
97 |
98 | It is known that Windows app store Python definitely does not
99 | work, it's checked against. And on macOS "pyenv" likely does
100 | **not** work.
101 |
102 | - Operating System: Linux, FreeBSD, NetBSD, macOS X, and Windows (32/64
103 | bits).
104 |
105 | Others may work as well. The portability is expected to be generally
106 | good, but the e.g. Scons usage may have to be adapted. Make sure to
107 | match Windows Python and C compiler architecture, or else you will
108 | get cryptic error messages.
109 |
110 | - Architectures: x86, x86_64 (amd64), and arm, likely many more
111 |
112 | Other architectures are expected to also work, out of the box, as
113 | Nuitka is generally not using any hardware specifics. These are just
114 | the ones tested and known to be good. Feedback is welcome. Generally,
115 | the architectures that Debian supports can be considered good and
116 | tested too.
117 |
118 | .. [#]
119 |
120 | Support for this C11 is a given with gcc 5.x or higher or any clang
121 | version.
122 |
123 | The MSVC compiler doesn't do it yet. But as a workaround, as the C++03
124 | language standard is very overlapping with C11, it is then used instead
125 | where the C compiler is too old. Nuitka used to require a C++ compiler
126 | in the past, but it changed.
127 |
128 | .. [#]
129 |
130 | Download for free from
131 | https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx
132 | (the community editions work just fine).
133 |
134 | The latest version is recommended but not required. On the other hand,
135 | there is no need to except pre-Windows 10 support, and they might work
136 | for you, but support of these configurations is only available to
137 | commercial users.
138 |
139 |
140 | Installation
141 | ============
142 |
143 | For most systems, there will be packages on the `download page
144 | `__ of Nuitka. But you can also
145 | install it from source code as described above, but also like any other
146 | Python program it can be installed via the normal ``python setup.py
147 | install`` routine.
148 |
149 | License
150 | =======
151 |
152 | Nuitka is licensed under the Apache License, Version 2.0; you may not
153 | use it except in compliance with the License.
154 |
155 | You may obtain a copy of the License at
156 | http://www.apache.org/licenses/LICENSE-2.0
157 |
158 | Unless required by applicable law or agreed to in writing, software
159 | distributed under the License is distributed on an "AS IS" BASIS,
160 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
161 | See the License for the specific language governing permissions and
162 | limitations under the License.
163 |
164 | *************************************
165 | Tutorial Setup and build on Windows
166 | *************************************
167 |
168 | This is basic steps if you have nothing installed, of course if you have
169 | any of the parts, just skip it.
170 |
171 | Setup
172 | =====
173 |
174 | Install Python
175 | --------------
176 |
177 | - Download and install Python from
178 | https://www.python.org/downloads/windows
179 |
180 | - Select one of ``Windows x86-64 web-based installer`` (64 bits Python,
181 | recommended) or ``x86 executable`` (32 bits Python) installer.
182 |
183 | - Verify it's working using command ``python --version``.
184 |
185 | Install Nuitka
186 | --------------
187 |
188 | - ``python -m pip install nuitka``
189 |
190 | - Verify using command ``python -m nuitka --version``
191 |
192 | Install EasyNuitka
193 | --------------
194 | - ``python -m pip install EasyNuitka``
195 |
196 | Run EasyNuitka
197 | --------------
198 | - ``python -m EasyNuitka``
199 |
200 |
201 | Help
202 | --------------
203 | You will find the current version at:
204 | https://nuitka.net/doc/user-manual.html
205 |
--------------------------------------------------------------------------------
/exe/EasyNuitka.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qunat/EasyNuitka/87917f261c40e4be65a30a448bc6d4e64d0fd1f2/exe/EasyNuitka.exe
--------------------------------------------------------------------------------
/icon/Nuitka.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qunat/EasyNuitka/87917f261c40e4be65a30a448bc6d4e64d0fd1f2/icon/Nuitka.ico
--------------------------------------------------------------------------------
/icon/Nuitka.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qunat/EasyNuitka/87917f261c40e4be65a30a448bc6d4e64d0fd1f2/icon/Nuitka.png
--------------------------------------------------------------------------------
/mainui.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Form implementation generated from reading ui file 'mainui.ui'
4 | #
5 | # Created by: PyQt5 UI code generator 5.15.4
6 | #
7 | # WARNING: Any manual changes made to this file will be lost when pyuic5 is
8 | # run again. Do not edit this file unless you know what you are doing.
9 |
10 |
11 | from PyQt5 import QtCore, QtGui, QtWidgets
12 |
13 |
14 | class Ui_MainWindow(object):
15 | def setupUi(self, MainWindow):
16 | MainWindow.setObjectName("MainWindow")
17 | MainWindow.resize(774, 774)
18 | font = QtGui.QFont()
19 | font.setFamily("微软雅黑")
20 | font.setPointSize(12)
21 | MainWindow.setFont(font)
22 | self.centralwidget = QtWidgets.QWidget(MainWindow)
23 | self.centralwidget.setObjectName("centralwidget")
24 | self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
25 | self.groupBox.setGeometry(QtCore.QRect(20, 90, 731, 141))
26 | self.groupBox.setObjectName("groupBox")
27 | self.checkBox = QtWidgets.QCheckBox(self.groupBox)
28 | self.checkBox.setGeometry(QtCore.QRect(20, 40, 151, 17))
29 | self.checkBox.setObjectName("checkBox")
30 | self.checkBox_2 = QtWidgets.QCheckBox(self.groupBox)
31 | self.checkBox_2.setGeometry(QtCore.QRect(200, 100, 111, 21))
32 | self.checkBox_2.setObjectName("checkBox_2")
33 | self.checkBox_3 = QtWidgets.QCheckBox(self.groupBox)
34 | self.checkBox_3.setGeometry(QtCore.QRect(200, 40, 141, 17))
35 | self.checkBox_3.setObjectName("checkBox_3")
36 | self.checkBox_4 = QtWidgets.QCheckBox(self.groupBox)
37 | self.checkBox_4.setGeometry(QtCore.QRect(200, 70, 141, 17))
38 | self.checkBox_4.setObjectName("checkBox_4")
39 | self.checkBox_5 = QtWidgets.QCheckBox(self.groupBox)
40 | self.checkBox_5.setGeometry(QtCore.QRect(330, 40, 151, 21))
41 | self.checkBox_5.setObjectName("checkBox_5")
42 | self.checkBox_6 = QtWidgets.QCheckBox(self.groupBox)
43 | self.checkBox_6.setGeometry(QtCore.QRect(330, 70, 151, 17))
44 | self.checkBox_6.setObjectName("checkBox_6")
45 | self.checkBox_7 = QtWidgets.QCheckBox(self.groupBox)
46 | self.checkBox_7.setGeometry(QtCore.QRect(20, 100, 91, 17))
47 | self.checkBox_7.setObjectName("checkBox_7")
48 | self.checkBox_8 = QtWidgets.QCheckBox(self.groupBox)
49 | self.checkBox_8.setGeometry(QtCore.QRect(20, 70, 171, 17))
50 | self.checkBox_8.setObjectName("checkBox_8")
51 | self.checkBox_10 = QtWidgets.QCheckBox(self.groupBox)
52 | self.checkBox_10.setGeometry(QtCore.QRect(330, 100, 101, 21))
53 | self.checkBox_10.setObjectName("checkBox_10")
54 | self.checkBox_9 = QtWidgets.QCheckBox(self.groupBox)
55 | self.checkBox_9.setGeometry(QtCore.QRect(500, 40, 221, 21))
56 | self.checkBox_9.setObjectName("checkBox_9")
57 | self.checkBox_17 = QtWidgets.QCheckBox(self.groupBox)
58 | self.checkBox_17.setGeometry(QtCore.QRect(500, 70, 211, 17))
59 | self.checkBox_17.setObjectName("checkBox_17")
60 | self.checkBox_20 = QtWidgets.QCheckBox(self.groupBox)
61 | self.checkBox_20.setGeometry(QtCore.QRect(500, 100, 211, 17))
62 | self.checkBox_20.setObjectName("checkBox_20")
63 | self.groupBox_2 = QtWidgets.QGroupBox(self.centralwidget)
64 | self.groupBox_2.setGeometry(QtCore.QRect(20, 410, 731, 241))
65 | self.groupBox_2.setObjectName("groupBox_2")
66 | self.label_3 = QtWidgets.QLabel(self.groupBox_2)
67 | self.label_3.setGeometry(QtCore.QRect(20, 30, 171, 21))
68 | self.label_3.setObjectName("label_3")
69 | self.lineEdit_3 = QtWidgets.QLineEdit(self.groupBox_2)
70 | self.lineEdit_3.setGeometry(QtCore.QRect(200, 30, 331, 21))
71 | font = QtGui.QFont()
72 | font.setFamily("微软雅黑")
73 | font.setPointSize(9)
74 | self.lineEdit_3.setFont(font)
75 | self.lineEdit_3.setObjectName("lineEdit_3")
76 | self.pushButton_3 = QtWidgets.QPushButton(self.groupBox_2)
77 | self.pushButton_3.setGeometry(QtCore.QRect(550, 30, 75, 23))
78 | self.pushButton_3.setObjectName("pushButton_3")
79 | self.pushButton_10 = QtWidgets.QPushButton(self.groupBox_2)
80 | self.pushButton_10.setGeometry(QtCore.QRect(640, 30, 75, 23))
81 | self.pushButton_10.setObjectName("pushButton_10")
82 | self.label_5 = QtWidgets.QLabel(self.groupBox_2)
83 | self.label_5.setGeometry(QtCore.QRect(20, 150, 271, 21))
84 | self.label_5.setObjectName("label_5")
85 | self.lineEdit_4 = QtWidgets.QLineEdit(self.groupBox_2)
86 | self.lineEdit_4.setGeometry(QtCore.QRect(200, 60, 331, 21))
87 | font = QtGui.QFont()
88 | font.setFamily("微软雅黑")
89 | font.setPointSize(9)
90 | self.lineEdit_4.setFont(font)
91 | self.lineEdit_4.setObjectName("lineEdit_4")
92 | self.pushButton_4 = QtWidgets.QPushButton(self.groupBox_2)
93 | self.pushButton_4.setGeometry(QtCore.QRect(550, 60, 75, 23))
94 | self.pushButton_4.setObjectName("pushButton_4")
95 | self.pushButton_12 = QtWidgets.QPushButton(self.groupBox_2)
96 | self.pushButton_12.setGeometry(QtCore.QRect(640, 60, 75, 23))
97 | self.pushButton_12.setObjectName("pushButton_12")
98 | self.label_6 = QtWidgets.QLabel(self.groupBox_2)
99 | self.label_6.setGeometry(QtCore.QRect(20, 90, 271, 21))
100 | self.label_6.setObjectName("label_6")
101 | self.lineEdit_5 = QtWidgets.QLineEdit(self.groupBox_2)
102 | self.lineEdit_5.setEnabled(False)
103 | self.lineEdit_5.setGeometry(QtCore.QRect(200, 90, 331, 21))
104 | font = QtGui.QFont()
105 | font.setFamily("微软雅黑")
106 | font.setPointSize(9)
107 | self.lineEdit_5.setFont(font)
108 | self.lineEdit_5.setObjectName("lineEdit_5")
109 | self.pushButton_5 = QtWidgets.QPushButton(self.groupBox_2)
110 | self.pushButton_5.setGeometry(QtCore.QRect(550, 90, 75, 23))
111 | self.pushButton_5.setObjectName("pushButton_5")
112 | self.pushButton_14 = QtWidgets.QPushButton(self.groupBox_2)
113 | self.pushButton_14.setGeometry(QtCore.QRect(640, 90, 75, 23))
114 | self.pushButton_14.setObjectName("pushButton_14")
115 | self.label_7 = QtWidgets.QLabel(self.groupBox_2)
116 | self.label_7.setGeometry(QtCore.QRect(20, 120, 151, 21))
117 | self.label_7.setObjectName("label_7")
118 | self.lineEdit_8 = QtWidgets.QLineEdit(self.groupBox_2)
119 | self.lineEdit_8.setEnabled(False)
120 | self.lineEdit_8.setGeometry(QtCore.QRect(200, 120, 331, 21))
121 | font = QtGui.QFont()
122 | font.setFamily("微软雅黑")
123 | font.setPointSize(9)
124 | self.lineEdit_8.setFont(font)
125 | self.lineEdit_8.setObjectName("lineEdit_8")
126 | self.pushButton_15 = QtWidgets.QPushButton(self.groupBox_2)
127 | self.pushButton_15.setGeometry(QtCore.QRect(550, 120, 75, 23))
128 | self.pushButton_15.setObjectName("pushButton_15")
129 | self.pushButton_16 = QtWidgets.QPushButton(self.groupBox_2)
130 | self.pushButton_16.setGeometry(QtCore.QRect(640, 120, 75, 23))
131 | self.pushButton_16.setObjectName("pushButton_16")
132 | self.label_8 = QtWidgets.QLabel(self.groupBox_2)
133 | self.label_8.setGeometry(QtCore.QRect(20, 60, 171, 21))
134 | self.label_8.setObjectName("label_8")
135 | self.lineEdit_9 = QtWidgets.QLineEdit(self.groupBox_2)
136 | self.lineEdit_9.setGeometry(QtCore.QRect(200, 150, 331, 21))
137 | font = QtGui.QFont()
138 | font.setFamily("微软雅黑")
139 | font.setPointSize(9)
140 | self.lineEdit_9.setFont(font)
141 | self.lineEdit_9.setObjectName("lineEdit_9")
142 | self.pushButton_17 = QtWidgets.QPushButton(self.groupBox_2)
143 | self.pushButton_17.setGeometry(QtCore.QRect(640, 150, 75, 23))
144 | self.pushButton_17.setObjectName("pushButton_17")
145 | self.pushButton_18 = QtWidgets.QPushButton(self.groupBox_2)
146 | self.pushButton_18.setGeometry(QtCore.QRect(550, 150, 75, 23))
147 | self.pushButton_18.setObjectName("pushButton_18")
148 | self.label_4 = QtWidgets.QLabel(self.groupBox_2)
149 | self.label_4.setGeometry(QtCore.QRect(20, 180, 61, 21))
150 | self.label_4.setObjectName("label_4")
151 | self.lineEdit_6 = QtWidgets.QLineEdit(self.groupBox_2)
152 | self.lineEdit_6.setGeometry(QtCore.QRect(200, 180, 331, 21))
153 | font = QtGui.QFont()
154 | font.setFamily("微软雅黑")
155 | font.setPointSize(9)
156 | self.lineEdit_6.setFont(font)
157 | self.lineEdit_6.setObjectName("lineEdit_6")
158 | self.pushButton_19 = QtWidgets.QPushButton(self.groupBox_2)
159 | self.pushButton_19.setGeometry(QtCore.QRect(640, 180, 75, 23))
160 | self.pushButton_19.setObjectName("pushButton_19")
161 | self.pushButton_20 = QtWidgets.QPushButton(self.groupBox_2)
162 | self.pushButton_20.setGeometry(QtCore.QRect(550, 180, 75, 23))
163 | self.pushButton_20.setObjectName("pushButton_20")
164 | self.radioButton = QtWidgets.QRadioButton(self.groupBox_2)
165 | self.radioButton.setGeometry(QtCore.QRect(200, 210, 89, 17))
166 | self.radioButton.setObjectName("radioButton")
167 | self.radioButton_2 = QtWidgets.QRadioButton(self.groupBox_2)
168 | self.radioButton_2.setGeometry(QtCore.QRect(360, 210, 101, 17))
169 | self.radioButton_2.setObjectName("radioButton_2")
170 | self.pushButton_7 = QtWidgets.QPushButton(self.centralwidget)
171 | self.pushButton_7.setGeometry(QtCore.QRect(140, 680, 131, 31))
172 | self.pushButton_7.setObjectName("pushButton_7")
173 | self.pushButton_8 = QtWidgets.QPushButton(self.centralwidget)
174 | self.pushButton_8.setGeometry(QtCore.QRect(340, 680, 101, 31))
175 | self.pushButton_8.setObjectName("pushButton_8")
176 | self.pushButton_9 = QtWidgets.QPushButton(self.centralwidget)
177 | self.pushButton_9.setGeometry(QtCore.QRect(500, 680, 101, 31))
178 | self.pushButton_9.setObjectName("pushButton_9")
179 | self.layoutWidget = QtWidgets.QWidget(self.centralwidget)
180 | self.layoutWidget.setGeometry(QtCore.QRect(20, 10, 721, 33))
181 | self.layoutWidget.setObjectName("layoutWidget")
182 | self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget)
183 | self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
184 | self.horizontalLayout.setObjectName("horizontalLayout")
185 | self.label = QtWidgets.QLabel(self.layoutWidget)
186 | self.label.setObjectName("label")
187 | self.horizontalLayout.addWidget(self.label)
188 | self.lineEdit = QtWidgets.QLineEdit(self.layoutWidget)
189 | self.lineEdit.setObjectName("lineEdit")
190 | self.horizontalLayout.addWidget(self.lineEdit)
191 | self.pushButton = QtWidgets.QPushButton(self.layoutWidget)
192 | self.pushButton.setObjectName("pushButton")
193 | self.horizontalLayout.addWidget(self.pushButton)
194 | self.layoutWidget1 = QtWidgets.QWidget(self.centralwidget)
195 | self.layoutWidget1.setGeometry(QtCore.QRect(21, 50, 721, 33))
196 | self.layoutWidget1.setObjectName("layoutWidget1")
197 | self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.layoutWidget1)
198 | self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
199 | self.horizontalLayout_2.setObjectName("horizontalLayout_2")
200 | self.label_2 = QtWidgets.QLabel(self.layoutWidget1)
201 | self.label_2.setObjectName("label_2")
202 | self.horizontalLayout_2.addWidget(self.label_2)
203 | self.lineEdit_2 = QtWidgets.QLineEdit(self.layoutWidget1)
204 | self.lineEdit_2.setObjectName("lineEdit_2")
205 | self.horizontalLayout_2.addWidget(self.lineEdit_2)
206 | self.pushButton_2 = QtWidgets.QPushButton(self.layoutWidget1)
207 | self.pushButton_2.setObjectName("pushButton_2")
208 | self.horizontalLayout_2.addWidget(self.pushButton_2)
209 | self.groupBox_3 = QtWidgets.QGroupBox(self.centralwidget)
210 | self.groupBox_3.setGeometry(QtCore.QRect(20, 240, 731, 161))
211 | self.groupBox_3.setObjectName("groupBox_3")
212 | self.checkBox_11 = QtWidgets.QCheckBox(self.groupBox_3)
213 | self.checkBox_11.setGeometry(QtCore.QRect(20, 30, 231, 21))
214 | self.checkBox_11.setObjectName("checkBox_11")
215 | self.checkBox_13 = QtWidgets.QCheckBox(self.groupBox_3)
216 | self.checkBox_13.setGeometry(QtCore.QRect(260, 30, 201, 21))
217 | self.checkBox_13.setObjectName("checkBox_13")
218 | self.checkBox_15 = QtWidgets.QCheckBox(self.groupBox_3)
219 | self.checkBox_15.setGeometry(QtCore.QRect(500, 30, 211, 21))
220 | self.checkBox_15.setObjectName("checkBox_15")
221 | self.checkBox_12 = QtWidgets.QCheckBox(self.groupBox_3)
222 | self.checkBox_12.setGeometry(QtCore.QRect(20, 60, 221, 21))
223 | self.checkBox_12.setObjectName("checkBox_12")
224 | self.checkBox_18 = QtWidgets.QCheckBox(self.groupBox_3)
225 | self.checkBox_18.setGeometry(QtCore.QRect(260, 60, 201, 21))
226 | self.checkBox_18.setObjectName("checkBox_18")
227 | self.checkBox_19 = QtWidgets.QCheckBox(self.groupBox_3)
228 | self.checkBox_19.setGeometry(QtCore.QRect(20, 90, 231, 21))
229 | self.checkBox_19.setObjectName("checkBox_19")
230 | self.checkBox_22 = QtWidgets.QCheckBox(self.groupBox_3)
231 | self.checkBox_22.setGeometry(QtCore.QRect(500, 60, 201, 21))
232 | self.checkBox_22.setObjectName("checkBox_22")
233 | self.checkBox_23 = QtWidgets.QCheckBox(self.groupBox_3)
234 | self.checkBox_23.setGeometry(QtCore.QRect(20, 120, 201, 21))
235 | self.checkBox_23.setObjectName("checkBox_23")
236 | self.checkBox_24 = QtWidgets.QCheckBox(self.groupBox_3)
237 | self.checkBox_24.setGeometry(QtCore.QRect(500, 90, 211, 21))
238 | self.checkBox_24.setObjectName("checkBox_24")
239 | self.checkBox_25 = QtWidgets.QCheckBox(self.groupBox_3)
240 | self.checkBox_25.setGeometry(QtCore.QRect(260, 90, 241, 21))
241 | self.checkBox_25.setObjectName("checkBox_25")
242 | self.checkBox_14 = QtWidgets.QCheckBox(self.groupBox_3)
243 | self.checkBox_14.setGeometry(QtCore.QRect(260, 120, 281, 21))
244 | self.checkBox_14.setObjectName("checkBox_14")
245 | MainWindow.setCentralWidget(self.centralwidget)
246 | self.menubar = QtWidgets.QMenuBar(MainWindow)
247 | self.menubar.setGeometry(QtCore.QRect(0, 0, 774, 26))
248 | self.menubar.setObjectName("menubar")
249 | self.menu = QtWidgets.QMenu(self.menubar)
250 | self.menu.setObjectName("menu")
251 | self.menu_2 = QtWidgets.QMenu(self.menubar)
252 | self.menu_2.setObjectName("menu_2")
253 | self.menu_3 = QtWidgets.QMenu(self.menubar)
254 | self.menu_3.setObjectName("menu_3")
255 | self.menu_4 = QtWidgets.QMenu(self.menubar)
256 | self.menu_4.setObjectName("menu_4")
257 | MainWindow.setMenuBar(self.menubar)
258 | self.statusbar = QtWidgets.QStatusBar(MainWindow)
259 | font = QtGui.QFont()
260 | font.setFamily("微软雅黑")
261 | font.setPointSize(8)
262 | self.statusbar.setFont(font)
263 | self.statusbar.setObjectName("statusbar")
264 | MainWindow.setStatusBar(self.statusbar)
265 | self.menubar.addAction(self.menu.menuAction())
266 | self.menubar.addAction(self.menu_2.menuAction())
267 | self.menubar.addAction(self.menu_3.menuAction())
268 | self.menubar.addAction(self.menu_4.menuAction())
269 |
270 | self.retranslateUi(MainWindow)
271 | QtCore.QMetaObject.connectSlotsByName(MainWindow)
272 |
273 | def retranslateUi(self, MainWindow):
274 | _translate = QtCore.QCoreApplication.translate
275 | MainWindow.setWindowTitle(_translate("MainWindow", "AutoNuitka"))
276 | self.groupBox.setTitle(_translate("MainWindow", "package method"))
277 | self.checkBox.setText(_translate("MainWindow", "--follow-imports"))
278 | self.checkBox_2.setText(_translate("MainWindow", "--mingw64"))
279 | self.checkBox_3.setText(_translate("MainWindow", "--standalone"))
280 | self.checkBox_4.setText(_translate("MainWindow", "--onefile"))
281 | self.checkBox_5.setText(_translate("MainWindow", "--show-memory"))
282 | self.checkBox_6.setText(_translate("MainWindow", "--show-progress"))
283 | self.checkBox_7.setText(_translate("MainWindow", "--module "))
284 | self.checkBox_8.setText(_translate("MainWindow", "--nofollow-imports"))
285 | self.checkBox_10.setText(_translate("MainWindow", "--msvc64"))
286 | self.checkBox_9.setText(_translate("MainWindow", "--include-plugin-pyqt5"))
287 | self.checkBox_17.setText(_translate("MainWindow", "--include-plugin-numpy"))
288 | self.checkBox_20.setText(_translate("MainWindow", "--include-plugin-torch"))
289 | self.groupBox_2.setTitle(_translate("MainWindow", "Parameter Setting"))
290 | self.label_3.setText(_translate("MainWindow", "--nofollow-import-to"))
291 | self.lineEdit_3.setText(_translate("MainWindow", "Enter module/package ;Separate them with commas"))
292 | self.pushButton_3.setText(_translate("MainWindow", "Add"))
293 | self.pushButton_10.setText(_translate("MainWindow", "Remove"))
294 | self.label_5.setText(_translate("MainWindow", "--include-package"))
295 | self.lineEdit_4.setText(_translate("MainWindow", "Select the folder you want to compile"))
296 | self.pushButton_4.setText(_translate("MainWindow", "Add"))
297 | self.pushButton_12.setText(_translate("MainWindow", "Remove"))
298 | self.label_6.setText(_translate("MainWindow", "--include-data-files"))
299 | self.pushButton_5.setText(_translate("MainWindow", "Add"))
300 | self.pushButton_14.setText(_translate("MainWindow", "Remove"))
301 | self.label_7.setText(_translate("MainWindow", "--include-data-dir"))
302 | self.pushButton_15.setText(_translate("MainWindow", "Add"))
303 | self.pushButton_16.setText(_translate("MainWindow", "Remove"))
304 | self.label_8.setText(_translate("MainWindow", "--follow-import-to"))
305 | self.lineEdit_9.setText(_translate("MainWindow", "Default to the entire module"))
306 | self.pushButton_17.setText(_translate("MainWindow", "Remove"))
307 | self.pushButton_18.setText(_translate("MainWindow", "Add"))
308 | self.label_4.setText(_translate("MainWindow", " Icons"))
309 | self.lineEdit_6.setText(_translate("MainWindow", "Select icon"))
310 | self.pushButton_19.setText(_translate("MainWindow", "Remove"))
311 | self.pushButton_20.setText(_translate("MainWindow", "Add"))
312 | self.radioButton.setText(_translate("MainWindow", "windows"))
313 | self.radioButton_2.setText(_translate("MainWindow", "console"))
314 | self.pushButton_7.setText(_translate("MainWindow", "Start package"))
315 | self.pushButton_8.setText(_translate("MainWindow", "stop"))
316 | self.pushButton_9.setText(_translate("MainWindow", "Quite"))
317 | self.label.setText(_translate("MainWindow", "Manin File/Module"))
318 | self.pushButton.setText(_translate("MainWindow", "choose"))
319 | self.label_2.setText(_translate("MainWindow", "OutPut Path "))
320 | self.pushButton_2.setText(_translate("MainWindow", "choose"))
321 | self.groupBox_3.setTitle(_translate("MainWindow", "other plugin"))
322 | self.checkBox_11.setText(_translate("MainWindow", "--include-plugin-matplotlib"))
323 | self.checkBox_13.setText(_translate("MainWindow", "--include-plugin-pyqt6"))
324 | self.checkBox_15.setText(_translate("MainWindow", "--include-plugin-pyside2"))
325 | self.checkBox_12.setText(_translate("MainWindow", "--include-plugin-pyside6"))
326 | self.checkBox_18.setText(_translate("MainWindow", "--include-plugin-no-qt5"))
327 | self.checkBox_19.setText(_translate("MainWindow", "--include-plugin-tensorflow"))
328 | self.checkBox_22.setText(_translate("MainWindow", "--include-plugin-upx"))
329 | self.checkBox_23.setText(_translate("MainWindow", "--include-plugin-trio"))
330 | self.checkBox_24.setText(_translate("MainWindow", "--include-plugin-tk-inter"))
331 | self.checkBox_25.setText(_translate("MainWindow", "--include-plugin-pywebview"))
332 | self.checkBox_14.setText(_translate("MainWindow", "--include-plugin-multiprocessing"))
333 | self.menu.setTitle(_translate("MainWindow", "File"))
334 | self.menu_2.setTitle(_translate("MainWindow", "Edit"))
335 | self.menu_3.setTitle(_translate("MainWindow", "Setting"))
336 | self.menu_4.setTitle(_translate("MainWindow", "Help"))
337 |
--------------------------------------------------------------------------------
/mainui.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 774
10 | 774
11 |
12 |
13 |
14 |
15 | 微软雅黑
16 | 12
17 |
18 |
19 |
20 | AutoNuitka
21 |
22 |
23 |
24 |
25 |
26 | 20
27 | 90
28 | 731
29 | 141
30 |
31 |
32 |
33 | package method
34 |
35 |
36 |
37 |
38 | 20
39 | 40
40 | 151
41 | 17
42 |
43 |
44 |
45 | --follow-imports
46 |
47 |
48 |
49 |
50 |
51 | 200
52 | 100
53 | 111
54 | 21
55 |
56 |
57 |
58 | --mingw64
59 |
60 |
61 |
62 |
63 |
64 | 200
65 | 40
66 | 141
67 | 17
68 |
69 |
70 |
71 | --standalone
72 |
73 |
74 |
75 |
76 |
77 | 200
78 | 70
79 | 141
80 | 17
81 |
82 |
83 |
84 | --onefile
85 |
86 |
87 |
88 |
89 |
90 | 330
91 | 40
92 | 151
93 | 21
94 |
95 |
96 |
97 | --show-memory
98 |
99 |
100 |
101 |
102 |
103 | 330
104 | 70
105 | 151
106 | 17
107 |
108 |
109 |
110 | --show-progress
111 |
112 |
113 |
114 |
115 |
116 | 20
117 | 100
118 | 91
119 | 17
120 |
121 |
122 |
123 | --module
124 |
125 |
126 |
127 |
128 |
129 | 20
130 | 70
131 | 171
132 | 17
133 |
134 |
135 |
136 | --nofollow-imports
137 |
138 |
139 |
140 |
141 |
142 | 330
143 | 100
144 | 101
145 | 21
146 |
147 |
148 |
149 | --msvc64
150 |
151 |
152 |
153 |
154 |
155 | 500
156 | 40
157 | 221
158 | 21
159 |
160 |
161 |
162 | --include-plugin-pyqt5
163 |
164 |
165 |
166 |
167 |
168 | 500
169 | 70
170 | 211
171 | 17
172 |
173 |
174 |
175 | --include-plugin-numpy
176 |
177 |
178 |
179 |
180 |
181 | 500
182 | 100
183 | 211
184 | 17
185 |
186 |
187 |
188 | --include-plugin-torch
189 |
190 |
191 |
192 |
193 |
194 |
195 | 20
196 | 410
197 | 731
198 | 241
199 |
200 |
201 |
202 | Parameter Setting
203 |
204 |
205 |
206 |
207 | 20
208 | 30
209 | 171
210 | 21
211 |
212 |
213 |
214 | --nofollow-import-to
215 |
216 |
217 |
218 |
219 |
220 | 200
221 | 30
222 | 331
223 | 21
224 |
225 |
226 |
227 |
228 | 微软雅黑
229 | 9
230 |
231 |
232 |
233 | Enter module/package ;Separate them with commas
234 |
235 |
236 |
237 |
238 |
239 | 550
240 | 30
241 | 75
242 | 23
243 |
244 |
245 |
246 | Add
247 |
248 |
249 |
250 |
251 |
252 | 640
253 | 30
254 | 75
255 | 23
256 |
257 |
258 |
259 | Remove
260 |
261 |
262 |
263 |
264 |
265 | 20
266 | 150
267 | 271
268 | 21
269 |
270 |
271 |
272 | --include-package
273 |
274 |
275 |
276 |
277 |
278 | 200
279 | 60
280 | 331
281 | 21
282 |
283 |
284 |
285 |
286 | 微软雅黑
287 | 9
288 |
289 |
290 |
291 | Select the folder you want to compile
292 |
293 |
294 |
295 |
296 |
297 | 550
298 | 60
299 | 75
300 | 23
301 |
302 |
303 |
304 | Add
305 |
306 |
307 |
308 |
309 |
310 | 640
311 | 60
312 | 75
313 | 23
314 |
315 |
316 |
317 | Remove
318 |
319 |
320 |
321 |
322 |
323 | 20
324 | 90
325 | 271
326 | 21
327 |
328 |
329 |
330 | --include-data-files
331 |
332 |
333 |
334 |
335 | false
336 |
337 |
338 |
339 | 200
340 | 90
341 | 331
342 | 21
343 |
344 |
345 |
346 |
347 | 微软雅黑
348 | 9
349 |
350 |
351 |
352 |
353 |
354 |
355 | 550
356 | 90
357 | 75
358 | 23
359 |
360 |
361 |
362 | Add
363 |
364 |
365 |
366 |
367 |
368 | 640
369 | 90
370 | 75
371 | 23
372 |
373 |
374 |
375 | Remove
376 |
377 |
378 |
379 |
380 |
381 | 20
382 | 120
383 | 151
384 | 21
385 |
386 |
387 |
388 | --include-data-dir
389 |
390 |
391 |
392 |
393 | false
394 |
395 |
396 |
397 | 200
398 | 120
399 | 331
400 | 21
401 |
402 |
403 |
404 |
405 | 微软雅黑
406 | 9
407 |
408 |
409 |
410 |
411 |
412 |
413 | 550
414 | 120
415 | 75
416 | 23
417 |
418 |
419 |
420 | Add
421 |
422 |
423 |
424 |
425 |
426 | 640
427 | 120
428 | 75
429 | 23
430 |
431 |
432 |
433 | Remove
434 |
435 |
436 |
437 |
438 |
439 | 20
440 | 60
441 | 171
442 | 21
443 |
444 |
445 |
446 | --follow-import-to
447 |
448 |
449 |
450 |
451 |
452 | 200
453 | 150
454 | 331
455 | 21
456 |
457 |
458 |
459 |
460 | 微软雅黑
461 | 9
462 |
463 |
464 |
465 | Default to the entire module
466 |
467 |
468 |
469 |
470 |
471 | 640
472 | 150
473 | 75
474 | 23
475 |
476 |
477 |
478 | Remove
479 |
480 |
481 |
482 |
483 |
484 | 550
485 | 150
486 | 75
487 | 23
488 |
489 |
490 |
491 | Add
492 |
493 |
494 |
495 |
496 |
497 | 20
498 | 180
499 | 61
500 | 21
501 |
502 |
503 |
504 | Icons
505 |
506 |
507 |
508 |
509 |
510 | 200
511 | 180
512 | 331
513 | 21
514 |
515 |
516 |
517 |
518 | 微软雅黑
519 | 9
520 |
521 |
522 |
523 | Select icon
524 |
525 |
526 |
527 |
528 |
529 | 640
530 | 180
531 | 75
532 | 23
533 |
534 |
535 |
536 | Remove
537 |
538 |
539 |
540 |
541 |
542 | 550
543 | 180
544 | 75
545 | 23
546 |
547 |
548 |
549 | Add
550 |
551 |
552 |
553 |
554 |
555 | 200
556 | 210
557 | 89
558 | 17
559 |
560 |
561 |
562 | windows
563 |
564 |
565 |
566 |
567 |
568 | 360
569 | 210
570 | 101
571 | 17
572 |
573 |
574 |
575 | console
576 |
577 |
578 |
579 |
580 |
581 |
582 | 140
583 | 680
584 | 131
585 | 31
586 |
587 |
588 |
589 | Start package
590 |
591 |
592 |
593 |
594 |
595 | 340
596 | 680
597 | 101
598 | 31
599 |
600 |
601 |
602 | stop
603 |
604 |
605 |
606 |
607 |
608 | 500
609 | 680
610 | 101
611 | 31
612 |
613 |
614 |
615 | Quite
616 |
617 |
618 |
619 |
620 |
621 | 20
622 | 10
623 | 721
624 | 33
625 |
626 |
627 |
628 | -
629 |
630 |
631 | Manin File/Module
632 |
633 |
634 |
635 | -
636 |
637 |
638 | -
639 |
640 |
641 | choose
642 |
643 |
644 |
645 |
646 |
647 |
648 |
649 |
650 | 21
651 | 50
652 | 721
653 | 33
654 |
655 |
656 |
657 | -
658 |
659 |
660 | OutPut Path
661 |
662 |
663 |
664 | -
665 |
666 |
667 | -
668 |
669 |
670 | choose
671 |
672 |
673 |
674 |
675 |
676 |
677 |
678 |
679 | 20
680 | 240
681 | 731
682 | 161
683 |
684 |
685 |
686 | other plugin
687 |
688 |
689 |
690 |
691 | 20
692 | 30
693 | 231
694 | 21
695 |
696 |
697 |
698 | --include-plugin-matplotlib
699 |
700 |
701 |
702 |
703 |
704 | 260
705 | 30
706 | 201
707 | 21
708 |
709 |
710 |
711 | --include-plugin-pyqt6
712 |
713 |
714 |
715 |
716 |
717 | 500
718 | 30
719 | 211
720 | 21
721 |
722 |
723 |
724 | --include-plugin-pyside2
725 |
726 |
727 |
728 |
729 |
730 | 20
731 | 60
732 | 221
733 | 21
734 |
735 |
736 |
737 | --include-plugin-pyside6
738 |
739 |
740 |
741 |
742 |
743 | 260
744 | 60
745 | 201
746 | 21
747 |
748 |
749 |
750 | --include-plugin-no-qt5
751 |
752 |
753 |
754 |
755 |
756 | 20
757 | 90
758 | 231
759 | 21
760 |
761 |
762 |
763 | --include-plugin-tensorflow
764 |
765 |
766 |
767 |
768 |
769 | 500
770 | 60
771 | 201
772 | 21
773 |
774 |
775 |
776 | --include-plugin-upx
777 |
778 |
779 |
780 |
781 |
782 | 20
783 | 120
784 | 201
785 | 21
786 |
787 |
788 |
789 | --include-plugin-trio
790 |
791 |
792 |
793 |
794 |
795 | 500
796 | 90
797 | 211
798 | 21
799 |
800 |
801 |
802 | --include-plugin-tk-inter
803 |
804 |
805 |
806 |
807 |
808 | 260
809 | 90
810 | 241
811 | 21
812 |
813 |
814 |
815 | --include-plugin-pywebview
816 |
817 |
818 |
819 |
820 |
821 | 260
822 | 120
823 | 281
824 | 21
825 |
826 |
827 |
828 | --include-plugin-multiprocessing
829 |
830 |
831 |
832 |
833 |
867 |
868 |
869 |
870 | 微软雅黑
871 | 8
872 |
873 |
874 |
875 |
876 |
877 |
878 |
879 |
--------------------------------------------------------------------------------
/pic/EasyNuitka.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qunat/EasyNuitka/87917f261c40e4be65a30a448bc6d4e64d0fd1f2/pic/EasyNuitka.png
--------------------------------------------------------------------------------
/pic/Nuitka.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/qunat/EasyNuitka/87917f261c40e4be65a30a448bc6d4e64d0fd1f2/pic/Nuitka.png
--------------------------------------------------------------------------------
/src/EasyNuitka.py:
--------------------------------------------------------------------------------
1 | # This is a sample Python script.
2 | import os
3 | import sys
4 | import threading
5 | from PyQt5.QtCore import Qt
6 | from PyQt5 import QtWidgets,QtGui
7 | from PyQt5.QtGui import QIcon
8 | from PyQt5.QtWidgets import QApplication, QStyleFactory
9 | import nuitka
10 | import mainui
11 | import subprocess
12 | import shutil
13 |
14 |
15 | class MainGui(mainui.Ui_MainWindow, QtWidgets.QMainWindow):
16 | def __init__(self,parent=None):
17 | super(MainGui, self).__init__(parent)
18 | self.setupUi(self)
19 | self.setWindowTitle( "EasyNuitka")
20 | self.setWindowIcon(QIcon("./icon/Nuitka.png"))
21 | self.pushButton.clicked.connect(self.choose_main_py)
22 | self.pushButton_2.clicked.connect(self.set_output_path)
23 | self.pushButton_7.clicked.connect(self.Multithreading_command)
24 | self.pushButton_4.clicked.connect(self.follow_import_to)
25 | self.pushButton_12.clicked.connect(self.follow_import_to_remove)
26 | self.pushButton_20.clicked.connect(self.set_icon)
27 | self.pushButton_19.clicked.connect(self.remove_icon)
28 | self.pushButton_9.clicked.connect(self.quit)
29 | self.pushButton_3.clicked.connect(self.nofollow_import_to)
30 | self.pushButton_10.clicked.connect(self.nofollow_import_to_remove)
31 | self.pushButton_17.clicked.connect(self.include_package_remove)
32 | self.chekbox_clicked_init()
33 | self.command_dict={}
34 | self.command_str=None
35 | self.main_name=None
36 | self.outputpath="./"
37 | self.follow_import_to_document_str=""
38 | self.nofollow_import_to_document_str=""
39 | self.iconname=None
40 | self.iconpath=""
41 | self.compile_module_path=None
42 | self.statusbar.showMessage("The software runs normally")
43 | def choose_main_py(self):
44 | try:
45 | if not self.checkBox_7.isChecked():
46 | file = QtWidgets.QFileDialog.getOpenFileName(self,
47 | "choose main.py", "./",
48 | "All Files (*.py);;Text Files (*.py)")
49 | self.filenpath = file[0]
50 | self.lineEdit.setText(file[0])
51 | self.main_name = self.lineEdit.setText(file[0])
52 | self.filename = self.filenpath.split("/")[-1]
53 | self.filenpath = self.filenpath.replace(self.filename, "")
54 | self.dish = self.filenpath[0:2]
55 | self.statusbar.showMessage("File selected successfully")
56 |
57 | else :
58 | directory = QtWidgets.QFileDialog.getExistingDirectory(self, "choose compile module dir", "./")
59 | self.compile_module_path=directory
60 | self.lineEdit.setText(directory)
61 | self.lineEdit_9.setText(self.compile_module_path.split("/")[-1])
62 | self.statusbar.showMessage("Output directory set successfully")
63 |
64 |
65 | except Exception as e:
66 | self.statusbar.showMessage("File selection failed")
67 | print(e)
68 | def set_output_path(self):
69 | try:
70 | directory = QtWidgets.QFileDialog.getExistingDirectory(self, "getExistingDirectory", "./")
71 | self.outputpath=directory
72 | self.lineEdit_2.setText(directory)
73 | self.statusbar.showMessage("Output directory set successfully")
74 | except Exception as e:
75 | self.statusbar.showMessage("Output directory setting failed")
76 | pass
77 | def get_package_method(self):
78 | #--follow-imports
79 | if self.checkBox.isChecked():
80 | self.lineEdit_3.setEnabled(False)
81 | self.lineEdit_4.setEnabled(False)
82 | self.checkBox_8.setEnabled(False)
83 |
84 | self.command_dict[self.checkBox]="--follow-imports"
85 | #print(self.command_dict)
86 | elif not self.checkBox.isChecked():
87 | self.lineEdit_3.setEnabled(True)
88 | self.lineEdit_4.setEnabled(True)
89 | self.checkBox_8.setEnabled(True)
90 | self.command_dict[self.checkBox] = ""
91 | #--nofollow-imports
92 | if self.checkBox_8.isChecked():
93 | self.checkBox.setEnabled(False)
94 | self.command_dict[self.checkBox_8] = "--nofollow-imports"
95 | #print(self.command_dict)
96 | elif not self.checkBox_8.isChecked():
97 | self.checkBox.setEnabled(True)
98 | self.command_dict[self.checkBox_8] = ""
99 | #--module
100 | if self.checkBox_7.isChecked():
101 | self.checkBox.setEnabled(False)
102 | self.checkBox_8.setEnabled(False)
103 | self.checkBox_3.setEnabled(False)
104 | self.checkBox_4.setEnabled(False)
105 | self.lineEdit_3.setEnabled(False)
106 | self.lineEdit_4.setEnabled(False)
107 | self.lineEdit_5.setEnabled(False)
108 | self.lineEdit_8.setEnabled(False)
109 | self.lineEdit_6.setEnabled(False)
110 | self.lineEdit_9.setEnabled(True)
111 | self.radioButton.setEnabled(False)
112 | self.radioButton_2.setEnabled(False)
113 | self.command_dict[self.checkBox_7] = "--module"
114 | #print(self.command_dict)
115 | elif not self.checkBox_7.isChecked():
116 | self.checkBox_3.setEnabled(True)
117 | self.checkBox_4.setEnabled(True)
118 | self.lineEdit_3.setEnabled(True)
119 | self.lineEdit_4.setEnabled(True)
120 | self.lineEdit_5.setEnabled(True)
121 | self.lineEdit_8.setEnabled(True)
122 | self.lineEdit_6.setEnabled(True)
123 | self.lineEdit_9.setEnabled(False)
124 | self.radioButton.setEnabled(True)
125 | self.radioButton_2.setEnabled(True)
126 | self.checkBox_3.setEnabled(True)
127 | self.checkBox_4.setEnabled(True)
128 | if self.checkBox.isChecked():
129 | self.checkBox_8.setEnabled(False)
130 | if self.checkBox_8.isChecked():
131 | self.checkBox.setEnabled(False)
132 |
133 | self.command_dict[self.checkBox_7] = ""
134 | #--standalone
135 | if self.checkBox_3.isChecked():
136 | self.checkBox_4.setEnabled(False)
137 | self.checkBox_7.setEnabled(False)
138 | self.command_dict[self.checkBox_3] = "--standalone"
139 | elif not self.checkBox_3.isChecked() and not self.checkBox_7.isChecked():
140 | self.checkBox_7.setEnabled(True)
141 | self.checkBox_4.setEnabled(True)
142 | self.command_dict[self.checkBox_3] = ""
143 | #--onefile
144 | if self.checkBox_4.isChecked():
145 | self.checkBox_3.setEnabled(False)
146 | self.checkBox_7.setEnabled(False)
147 | self.command_dict[self.checkBox_4] = "--onefile"
148 | elif not self.checkBox_4.isChecked() and not self.checkBox_7.isChecked() :
149 | self.checkBox_3.setEnabled(True)
150 | if not self.checkBox_3.isChecked():
151 | self.checkBox_7.setEnabled(True)
152 | self.command_dict[self.checkBox_4] = ""
153 |
154 | #--mingw64
155 | if self.checkBox_2.isChecked():
156 | self.checkBox_10.setEnabled(False)
157 | self.command_dict[self.checkBox_2] = "--mingw64"
158 | else:
159 | self.checkBox_10.setEnabled(True)
160 | self.command_dict[self.checkBox_2] = ""
161 | #--show-memory
162 | if self.checkBox_5.isChecked():
163 | self.command_dict[self.checkBox_5] = "--show-memory"
164 | else:
165 | self.command_dict[self.checkBox_5] = ""
166 | #--show-progress
167 | if self.checkBox_6.isChecked():
168 | self.command_dict[self.checkBox_6] = "--show-progress"
169 | else:
170 | self.command_dict[self.checkBox_6] = ""
171 | #-msvc64
172 | if self.checkBox_10.isChecked():
173 | self.checkBox_2.setEnabled(False)
174 | self.command_dict[self.checkBox_10] = "-msvc64"
175 | else:
176 | self.checkBox_2.setEnabled(True)
177 | self.command_dict[self.checkBox_10] = ""
178 | #--include-plugin-pyqt5
179 | if self.checkBox_9.isChecked():
180 | self.command_dict[self.checkBox_9] = "--plugin-enable=pyqt5"
181 | else:
182 | self.command_dict[self.checkBox_9] = ""
183 | #--include-plugin-numpy
184 | if self.checkBox_17.isChecked():
185 | self.command_dict[self.checkBox_17] = "--plugin-enable=numpy"
186 | else:
187 | self.command_dict[self.checkBox_17] = ""
188 | #--include-plugin-torch
189 | if self.checkBox_20.isChecked():
190 | self.command_dict[self.checkBox_20] = "--plugin-enable=torch"
191 | else:
192 | self.command_dict[self.checkBox_20] = ""
193 | #--include-plugin-matplotlib
194 | if self.checkBox_11.isChecked():
195 | self.command_dict[self.checkBox_11] = "--plugin-enable=matplotlib"
196 | else:
197 | self.command_dict[self.checkBox_11] = ""
198 | #--include-plugin-pyqt6
199 | if self.checkBox_13.isChecked():
200 | self.command_dict[self.checkBox_13] = "--plugin-enable=pyqt6"
201 | else:
202 | self.command_dict[self.checkBox_13] = ""
203 | #--include-plugin-pyside2
204 | if self.checkBox_15.isChecked():
205 | self.command_dict[self.checkBox_15] = "--plugin-enable=pyside2"
206 | else:
207 | self.command_dict[self.checkBox_15] = ""
208 | #--include-plugin-pyside6
209 | if self.checkBox_12.isChecked():
210 | self.command_dict[self.checkBox_12] = "--plugin-enable=pyside6"
211 | else:
212 | self.command_dict[self.checkBox_12] = ""
213 | #--include-plugin-no-qt5
214 | if self.checkBox_18.isChecked():
215 | self.command_dict[self.checkBox_18] = "--plugin-enable=no-qt5"
216 | else:
217 | self.command_dict[self.checkBox_18] = ""
218 | #--include-plugin-upx
219 | if self.checkBox_22.isChecked():
220 | self.command_dict[self.checkBox_22] = "--plugin-enable=upx"
221 | else:
222 | self.command_dict[self.checkBox_22] = ""
223 | #--include-plugin-tensorflow
224 | if self.checkBox_19.isChecked():
225 | self.command_dict[self.checkBox_19] = "--plugin-enable=tensorflow"
226 | else:
227 | self.command_dict[self.checkBox_19] = ""
228 | #--include-plugin-pywebview
229 | if self.checkBox_25.isChecked():
230 | self.command_dict[self.checkBox_25] = "--plugin-enable=pywebview"
231 | else:
232 | self.command_dict[self.checkBox_25] = ""
233 | #--include-plugin-tk-inter
234 | if self.checkBox_24.isChecked():
235 | self.command_dict[self.checkBox_24] = "--plugin-enable=tk-inter"
236 | else:
237 | self.command_dict[self.checkBox_24] = ""
238 | #--include-plugin-trio
239 | if self.checkBox_23.isChecked():
240 | self.command_dict[self.checkBox_23] = "--plugin-enable=trio"
241 | else:
242 | self.command_dict[self.checkBox_23] = ""
243 | #--include-plugin-multiprocessing
244 | if self.checkBox_14.isChecked():
245 | self.command_dict[self.checkBox_14] = "--plugin-enable=multiprocessing"
246 | else:
247 | self.command_dict[self.checkBox_14] = ""
248 | #--windows-disable-console
249 | if self.radioButton.isChecked():
250 | self.command_dict[self.radioButton] = "--windows-disable-console"
251 | if self.radioButton_2.isChecked():
252 | self.command_dict[self.radioButton_2] = ""
253 | self.statusbar.showMessage("Selection succeeded")
254 | def Multithreading_command(self):
255 | t=threading.Thread(target=self.excute_command,args=())
256 | t.start()
257 | t.join()
258 | self.statusbar.showMessage("packaging is finishing")
259 | def excute_command(self):
260 | try:
261 | self.command_str="python -m nuitka "
262 | for command in self.command_dict.keys():
263 | if self.command_dict[command]=="":
264 | continue
265 | if self.command_dict[command]=="--module":
266 | self.command_dict[command]="--module "+self.compile_module_path.split("/")[-1]+" "+"--include-package="+\
267 | self.lineEdit_9.text()
268 | self.command_str+=self.command_dict[command]+" "
269 | if self.follow_import_to_document_str!="":
270 | self.command_str += "--follow-import-to=" + self.follow_import_to_document_str[0:len(self.follow_import_to_document_str)-1] + " "
271 | if self.follow_import_to_document_str!="":
272 | self.command_str+="--nofollow-import-to="+self.follow_import_to_document_str+" "
273 | self.command_str+="--output-dir="+self.outputpath+" "
274 | if self.iconname!=None:
275 | self.command_str+="--windows-icon-from-ico="+self.iconname+" "
276 | if not self.checkBox_7.isChecked():
277 | self.command_str+=self.filename
278 |
279 | print(self.command_str)
280 | if not self.checkBox_7.isChecked():
281 | os.chdir(self.filenpath)
282 | else:
283 | os.chdir(self.compile_module_path)
284 | os.chdir("../")
285 | os.system(self.command_str)
286 | self.statusbar.showMessage("Please wait to start packaging......")
287 | except Exception as e:
288 | self.statusbar.showMessage(e)
289 | #print(e)
290 |
291 | def chekbox_clicked_init(self):
292 | self.package_method=[]
293 | self.checkBox_dict = {self.checkBox: "--follow-imports", self.checkBox_8: "--nofollow-imports",
294 | self.checkBox_7: "--module",
295 | self.checkBox_3: "--standalone", self.checkBox_4: "--onefile",
296 | self.checkBox_2: "--mingw64", self.checkBox_5: "--show-memory",
297 | self.checkBox_6: "--show-progress", self.checkBox_10: "-msvc64",
298 | self.checkBox_9: "--include-plugin-pyqt5",
299 | self.checkBox_17: "--include-plugin-numpy",self.checkBox_20:"--include-plugin-torch",
300 | self.checkBox_11:"--include-plugin-matplotlib",self.checkBox_13:"--include-plugin-pyqt6",
301 | self.checkBox_15:"--include-plugin-pyside2",self.checkBox_12:"--include-plugin-pyside6",
302 | self.checkBox_18:"--include-plugin-no-qt5",self.checkBox_22:"--include-plugin-upx",
303 | self.checkBox_19:"--include-plugin-tensorflow",self.checkBox_25:"--include-plugin-pywebview",
304 | self.checkBox_24:"--include-plugin-tk-inter",self.checkBox_23:"--include-plugin-trio",
305 | self.checkBox_14:"--include-plugin-multiprocessing",self.radioButton:"--windows-disable-console",
306 | self.radioButton_2:""}
307 | for check in self.checkBox_dict.keys():
308 | try:
309 | check.clicked.connect(self.get_package_method)
310 | except:
311 | pass
312 | self.lineEdit_9.setEnabled(False)
313 | def nofollow_import_to(self):
314 | self.follow_import_to_document_str=self.lineEdit_3.text()
315 | self.statusbar.showMessage("add module to nofollow_import_to ")
316 | def nofollow_import_to_remove(self):
317 | self.lineEdit_3.setText("Enter module/package ;Separate them with commas")
318 | self.follow_import_to_document_str=""
319 | self.statusbar.showMessage("Removed")
320 | def follow_import_to(self):
321 | try:
322 | directory = QtWidgets.QFileDialog.getExistingDirectory(self, "getExistingDirectory", "./")
323 | self.follow_import_to_document = directory.split("/")[-1]
324 | self.follow_import_to_document_str+=self.follow_import_to_document+","
325 | self.lineEdit_4.setText(self.follow_import_to_document_str)
326 | except Exception as e:
327 | print(e)
328 | pass
329 | def follow_import_to_remove(self):
330 | try:
331 | self.lineEdit_4.setText("Select the folder you want to compile")
332 | except Exception as e:
333 | self.statusbar.showMessage("Removed")
334 | pass
335 | def include_data_files(self):
336 | pass
337 | def set_icon(self):
338 | try:
339 | if not self.checkBox_7.isChecked():
340 | file = QtWidgets.QFileDialog.getOpenFileName(self,
341 | "getOpenFileName", "./",
342 | "All Files (*);;Text Files (*)")
343 | self.iconpath = file[0]
344 | self.lineEdit_6.setText(self.iconpath)
345 | src = self.iconpath
346 | dist = self.filenpath + src.split("/")[-1]
347 | if not os.path.exists(dist):
348 | shutil.copyfile(src, dist)
349 | self.iconname = src.split("/")[-1]
350 |
351 | except Exception as e:
352 | print(e)
353 | def remove_icon(self):
354 | self.lineEdit_6.setText("Select icon")
355 | self.statusbar.showMessage("Removed")
356 |
357 | def include_data_files(self):
358 | try:
359 | file = QtWidgets.QFileDialog.getOpenFileName(self,
360 | "getOpenFileName", "./",
361 | "All Files (*);;Text Files (*)")
362 | self.include_data_files=file[0]
363 | except Exception as e:
364 | pass
365 |
366 | def include_package_remove(self):
367 | self.lineEdit_9.setText("Default to the entire module")
368 | def quit(self):
369 | sys.exit()
370 | # Press the green button in the gutter to run the script.
371 | if __name__ == '__main__':
372 | QApplication.setAttribute(Qt.AA_EnableHighDpiScaling)
373 | app = QtWidgets.QApplication(sys.argv)
374 | QApplication.setStyle(QStyleFactory.create('Fusion'))
375 | win = MainGui()
376 | win.show()
377 | sys.exit(app.exec_())
378 |
379 | # See PyCharm help at https://www.jetbrains.com/help/pycharm/
380 |
--------------------------------------------------------------------------------
/src/mainui.py:
--------------------------------------------------------------------------------
1 | # -*- coding: utf-8 -*-
2 |
3 | # Form implementation generated from reading ui file 'mainui.ui'
4 | #
5 | # Created by: PyQt5 UI code generator 5.15.4
6 | #
7 | # WARNING: Any manual changes made to this file will be lost when pyuic5 is
8 | # run again. Do not edit this file unless you know what you are doing.
9 |
10 |
11 | from PyQt5 import QtCore, QtGui, QtWidgets
12 |
13 |
14 | class Ui_MainWindow(object):
15 | def setupUi(self, MainWindow):
16 | MainWindow.setObjectName("MainWindow")
17 | MainWindow.resize(774, 774)
18 | font = QtGui.QFont()
19 | font.setFamily("微软雅黑")
20 | font.setPointSize(12)
21 | MainWindow.setFont(font)
22 | self.centralwidget = QtWidgets.QWidget(MainWindow)
23 | self.centralwidget.setObjectName("centralwidget")
24 | self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
25 | self.groupBox.setGeometry(QtCore.QRect(20, 90, 731, 141))
26 | self.groupBox.setObjectName("groupBox")
27 | self.checkBox = QtWidgets.QCheckBox(self.groupBox)
28 | self.checkBox.setGeometry(QtCore.QRect(20, 40, 151, 17))
29 | self.checkBox.setObjectName("checkBox")
30 | self.checkBox_2 = QtWidgets.QCheckBox(self.groupBox)
31 | self.checkBox_2.setGeometry(QtCore.QRect(200, 100, 111, 21))
32 | self.checkBox_2.setObjectName("checkBox_2")
33 | self.checkBox_3 = QtWidgets.QCheckBox(self.groupBox)
34 | self.checkBox_3.setGeometry(QtCore.QRect(200, 40, 141, 17))
35 | self.checkBox_3.setObjectName("checkBox_3")
36 | self.checkBox_4 = QtWidgets.QCheckBox(self.groupBox)
37 | self.checkBox_4.setGeometry(QtCore.QRect(200, 70, 141, 17))
38 | self.checkBox_4.setObjectName("checkBox_4")
39 | self.checkBox_5 = QtWidgets.QCheckBox(self.groupBox)
40 | self.checkBox_5.setGeometry(QtCore.QRect(330, 40, 151, 21))
41 | self.checkBox_5.setObjectName("checkBox_5")
42 | self.checkBox_6 = QtWidgets.QCheckBox(self.groupBox)
43 | self.checkBox_6.setGeometry(QtCore.QRect(330, 70, 151, 17))
44 | self.checkBox_6.setObjectName("checkBox_6")
45 | self.checkBox_7 = QtWidgets.QCheckBox(self.groupBox)
46 | self.checkBox_7.setGeometry(QtCore.QRect(20, 100, 91, 17))
47 | self.checkBox_7.setObjectName("checkBox_7")
48 | self.checkBox_8 = QtWidgets.QCheckBox(self.groupBox)
49 | self.checkBox_8.setGeometry(QtCore.QRect(20, 70, 171, 17))
50 | self.checkBox_8.setObjectName("checkBox_8")
51 | self.checkBox_10 = QtWidgets.QCheckBox(self.groupBox)
52 | self.checkBox_10.setGeometry(QtCore.QRect(330, 100, 101, 21))
53 | self.checkBox_10.setObjectName("checkBox_10")
54 | self.checkBox_9 = QtWidgets.QCheckBox(self.groupBox)
55 | self.checkBox_9.setGeometry(QtCore.QRect(500, 40, 221, 21))
56 | self.checkBox_9.setObjectName("checkBox_9")
57 | self.checkBox_17 = QtWidgets.QCheckBox(self.groupBox)
58 | self.checkBox_17.setGeometry(QtCore.QRect(500, 70, 211, 17))
59 | self.checkBox_17.setObjectName("checkBox_17")
60 | self.checkBox_20 = QtWidgets.QCheckBox(self.groupBox)
61 | self.checkBox_20.setGeometry(QtCore.QRect(500, 100, 211, 17))
62 | self.checkBox_20.setObjectName("checkBox_20")
63 | self.groupBox_2 = QtWidgets.QGroupBox(self.centralwidget)
64 | self.groupBox_2.setGeometry(QtCore.QRect(20, 410, 731, 241))
65 | self.groupBox_2.setObjectName("groupBox_2")
66 | self.label_3 = QtWidgets.QLabel(self.groupBox_2)
67 | self.label_3.setGeometry(QtCore.QRect(20, 30, 171, 21))
68 | self.label_3.setObjectName("label_3")
69 | self.lineEdit_3 = QtWidgets.QLineEdit(self.groupBox_2)
70 | self.lineEdit_3.setGeometry(QtCore.QRect(200, 30, 331, 21))
71 | font = QtGui.QFont()
72 | font.setFamily("微软雅黑")
73 | font.setPointSize(9)
74 | self.lineEdit_3.setFont(font)
75 | self.lineEdit_3.setObjectName("lineEdit_3")
76 | self.pushButton_3 = QtWidgets.QPushButton(self.groupBox_2)
77 | self.pushButton_3.setGeometry(QtCore.QRect(550, 30, 75, 23))
78 | self.pushButton_3.setObjectName("pushButton_3")
79 | self.pushButton_10 = QtWidgets.QPushButton(self.groupBox_2)
80 | self.pushButton_10.setGeometry(QtCore.QRect(640, 30, 75, 23))
81 | self.pushButton_10.setObjectName("pushButton_10")
82 | self.label_5 = QtWidgets.QLabel(self.groupBox_2)
83 | self.label_5.setGeometry(QtCore.QRect(20, 150, 271, 21))
84 | self.label_5.setObjectName("label_5")
85 | self.lineEdit_4 = QtWidgets.QLineEdit(self.groupBox_2)
86 | self.lineEdit_4.setGeometry(QtCore.QRect(200, 60, 331, 21))
87 | font = QtGui.QFont()
88 | font.setFamily("微软雅黑")
89 | font.setPointSize(9)
90 | self.lineEdit_4.setFont(font)
91 | self.lineEdit_4.setObjectName("lineEdit_4")
92 | self.pushButton_4 = QtWidgets.QPushButton(self.groupBox_2)
93 | self.pushButton_4.setGeometry(QtCore.QRect(550, 60, 75, 23))
94 | self.pushButton_4.setObjectName("pushButton_4")
95 | self.pushButton_12 = QtWidgets.QPushButton(self.groupBox_2)
96 | self.pushButton_12.setGeometry(QtCore.QRect(640, 60, 75, 23))
97 | self.pushButton_12.setObjectName("pushButton_12")
98 | self.label_6 = QtWidgets.QLabel(self.groupBox_2)
99 | self.label_6.setGeometry(QtCore.QRect(20, 90, 271, 21))
100 | self.label_6.setObjectName("label_6")
101 | self.lineEdit_5 = QtWidgets.QLineEdit(self.groupBox_2)
102 | self.lineEdit_5.setGeometry(QtCore.QRect(200, 90, 331, 21))
103 | font = QtGui.QFont()
104 | font.setFamily("微软雅黑")
105 | font.setPointSize(9)
106 | self.lineEdit_5.setFont(font)
107 | self.lineEdit_5.setObjectName("lineEdit_5")
108 | self.pushButton_5 = QtWidgets.QPushButton(self.groupBox_2)
109 | self.pushButton_5.setGeometry(QtCore.QRect(550, 90, 75, 23))
110 | self.pushButton_5.setObjectName("pushButton_5")
111 | self.pushButton_14 = QtWidgets.QPushButton(self.groupBox_2)
112 | self.pushButton_14.setGeometry(QtCore.QRect(640, 90, 75, 23))
113 | self.pushButton_14.setObjectName("pushButton_14")
114 | self.label_7 = QtWidgets.QLabel(self.groupBox_2)
115 | self.label_7.setGeometry(QtCore.QRect(20, 120, 151, 21))
116 | self.label_7.setObjectName("label_7")
117 | self.lineEdit_8 = QtWidgets.QLineEdit(self.groupBox_2)
118 | self.lineEdit_8.setGeometry(QtCore.QRect(200, 120, 331, 21))
119 | font = QtGui.QFont()
120 | font.setFamily("微软雅黑")
121 | font.setPointSize(9)
122 | self.lineEdit_8.setFont(font)
123 | self.lineEdit_8.setObjectName("lineEdit_8")
124 | self.pushButton_15 = QtWidgets.QPushButton(self.groupBox_2)
125 | self.pushButton_15.setGeometry(QtCore.QRect(550, 120, 75, 23))
126 | self.pushButton_15.setObjectName("pushButton_15")
127 | self.pushButton_16 = QtWidgets.QPushButton(self.groupBox_2)
128 | self.pushButton_16.setGeometry(QtCore.QRect(640, 120, 75, 23))
129 | self.pushButton_16.setObjectName("pushButton_16")
130 | self.label_8 = QtWidgets.QLabel(self.groupBox_2)
131 | self.label_8.setGeometry(QtCore.QRect(20, 60, 171, 21))
132 | self.label_8.setObjectName("label_8")
133 | self.lineEdit_9 = QtWidgets.QLineEdit(self.groupBox_2)
134 | self.lineEdit_9.setGeometry(QtCore.QRect(200, 150, 331, 21))
135 | font = QtGui.QFont()
136 | font.setFamily("微软雅黑")
137 | font.setPointSize(9)
138 | self.lineEdit_9.setFont(font)
139 | self.lineEdit_9.setObjectName("lineEdit_9")
140 | self.pushButton_17 = QtWidgets.QPushButton(self.groupBox_2)
141 | self.pushButton_17.setGeometry(QtCore.QRect(640, 150, 75, 23))
142 | self.pushButton_17.setObjectName("pushButton_17")
143 | self.pushButton_18 = QtWidgets.QPushButton(self.groupBox_2)
144 | self.pushButton_18.setGeometry(QtCore.QRect(550, 150, 75, 23))
145 | self.pushButton_18.setObjectName("pushButton_18")
146 | self.label_4 = QtWidgets.QLabel(self.groupBox_2)
147 | self.label_4.setGeometry(QtCore.QRect(20, 180, 61, 21))
148 | self.label_4.setObjectName("label_4")
149 | self.lineEdit_6 = QtWidgets.QLineEdit(self.groupBox_2)
150 | self.lineEdit_6.setGeometry(QtCore.QRect(200, 180, 331, 21))
151 | font = QtGui.QFont()
152 | font.setFamily("微软雅黑")
153 | font.setPointSize(9)
154 | self.lineEdit_6.setFont(font)
155 | self.lineEdit_6.setObjectName("lineEdit_6")
156 | self.pushButton_19 = QtWidgets.QPushButton(self.groupBox_2)
157 | self.pushButton_19.setGeometry(QtCore.QRect(640, 180, 75, 23))
158 | self.pushButton_19.setObjectName("pushButton_19")
159 | self.pushButton_20 = QtWidgets.QPushButton(self.groupBox_2)
160 | self.pushButton_20.setGeometry(QtCore.QRect(550, 180, 75, 23))
161 | self.pushButton_20.setObjectName("pushButton_20")
162 | self.radioButton = QtWidgets.QRadioButton(self.groupBox_2)
163 | self.radioButton.setGeometry(QtCore.QRect(200, 210, 89, 17))
164 | self.radioButton.setObjectName("radioButton")
165 | self.radioButton_2 = QtWidgets.QRadioButton(self.groupBox_2)
166 | self.radioButton_2.setGeometry(QtCore.QRect(360, 210, 101, 17))
167 | self.radioButton_2.setObjectName("radioButton_2")
168 | self.pushButton_7 = QtWidgets.QPushButton(self.centralwidget)
169 | self.pushButton_7.setGeometry(QtCore.QRect(140, 680, 131, 31))
170 | self.pushButton_7.setObjectName("pushButton_7")
171 | self.pushButton_8 = QtWidgets.QPushButton(self.centralwidget)
172 | self.pushButton_8.setGeometry(QtCore.QRect(340, 680, 101, 31))
173 | self.pushButton_8.setObjectName("pushButton_8")
174 | self.pushButton_9 = QtWidgets.QPushButton(self.centralwidget)
175 | self.pushButton_9.setGeometry(QtCore.QRect(500, 680, 101, 31))
176 | self.pushButton_9.setObjectName("pushButton_9")
177 | self.layoutWidget = QtWidgets.QWidget(self.centralwidget)
178 | self.layoutWidget.setGeometry(QtCore.QRect(20, 10, 721, 33))
179 | self.layoutWidget.setObjectName("layoutWidget")
180 | self.horizontalLayout = QtWidgets.QHBoxLayout(self.layoutWidget)
181 | self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
182 | self.horizontalLayout.setObjectName("horizontalLayout")
183 | self.label = QtWidgets.QLabel(self.layoutWidget)
184 | self.label.setObjectName("label")
185 | self.horizontalLayout.addWidget(self.label)
186 | self.lineEdit = QtWidgets.QLineEdit(self.layoutWidget)
187 | self.lineEdit.setObjectName("lineEdit")
188 | self.horizontalLayout.addWidget(self.lineEdit)
189 | self.pushButton = QtWidgets.QPushButton(self.layoutWidget)
190 | self.pushButton.setObjectName("pushButton")
191 | self.horizontalLayout.addWidget(self.pushButton)
192 | self.layoutWidget1 = QtWidgets.QWidget(self.centralwidget)
193 | self.layoutWidget1.setGeometry(QtCore.QRect(21, 50, 721, 33))
194 | self.layoutWidget1.setObjectName("layoutWidget1")
195 | self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.layoutWidget1)
196 | self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
197 | self.horizontalLayout_2.setObjectName("horizontalLayout_2")
198 | self.label_2 = QtWidgets.QLabel(self.layoutWidget1)
199 | self.label_2.setObjectName("label_2")
200 | self.horizontalLayout_2.addWidget(self.label_2)
201 | self.lineEdit_2 = QtWidgets.QLineEdit(self.layoutWidget1)
202 | self.lineEdit_2.setObjectName("lineEdit_2")
203 | self.horizontalLayout_2.addWidget(self.lineEdit_2)
204 | self.pushButton_2 = QtWidgets.QPushButton(self.layoutWidget1)
205 | self.pushButton_2.setObjectName("pushButton_2")
206 | self.horizontalLayout_2.addWidget(self.pushButton_2)
207 | self.groupBox_3 = QtWidgets.QGroupBox(self.centralwidget)
208 | self.groupBox_3.setGeometry(QtCore.QRect(20, 240, 731, 161))
209 | self.groupBox_3.setObjectName("groupBox_3")
210 | self.checkBox_11 = QtWidgets.QCheckBox(self.groupBox_3)
211 | self.checkBox_11.setGeometry(QtCore.QRect(20, 30, 231, 21))
212 | self.checkBox_11.setObjectName("checkBox_11")
213 | self.checkBox_13 = QtWidgets.QCheckBox(self.groupBox_3)
214 | self.checkBox_13.setGeometry(QtCore.QRect(260, 30, 201, 21))
215 | self.checkBox_13.setObjectName("checkBox_13")
216 | self.checkBox_15 = QtWidgets.QCheckBox(self.groupBox_3)
217 | self.checkBox_15.setGeometry(QtCore.QRect(500, 30, 211, 21))
218 | self.checkBox_15.setObjectName("checkBox_15")
219 | self.checkBox_12 = QtWidgets.QCheckBox(self.groupBox_3)
220 | self.checkBox_12.setGeometry(QtCore.QRect(20, 60, 221, 21))
221 | self.checkBox_12.setObjectName("checkBox_12")
222 | self.checkBox_18 = QtWidgets.QCheckBox(self.groupBox_3)
223 | self.checkBox_18.setGeometry(QtCore.QRect(260, 60, 201, 21))
224 | self.checkBox_18.setObjectName("checkBox_18")
225 | self.checkBox_19 = QtWidgets.QCheckBox(self.groupBox_3)
226 | self.checkBox_19.setGeometry(QtCore.QRect(20, 90, 231, 21))
227 | self.checkBox_19.setObjectName("checkBox_19")
228 | self.checkBox_22 = QtWidgets.QCheckBox(self.groupBox_3)
229 | self.checkBox_22.setGeometry(QtCore.QRect(500, 60, 201, 21))
230 | self.checkBox_22.setObjectName("checkBox_22")
231 | self.checkBox_23 = QtWidgets.QCheckBox(self.groupBox_3)
232 | self.checkBox_23.setGeometry(QtCore.QRect(20, 120, 201, 21))
233 | self.checkBox_23.setObjectName("checkBox_23")
234 | self.checkBox_24 = QtWidgets.QCheckBox(self.groupBox_3)
235 | self.checkBox_24.setGeometry(QtCore.QRect(500, 90, 211, 21))
236 | self.checkBox_24.setObjectName("checkBox_24")
237 | self.checkBox_25 = QtWidgets.QCheckBox(self.groupBox_3)
238 | self.checkBox_25.setGeometry(QtCore.QRect(260, 90, 241, 21))
239 | self.checkBox_25.setObjectName("checkBox_25")
240 | self.checkBox_14 = QtWidgets.QCheckBox(self.groupBox_3)
241 | self.checkBox_14.setGeometry(QtCore.QRect(260, 120, 281, 21))
242 | self.checkBox_14.setObjectName("checkBox_14")
243 | MainWindow.setCentralWidget(self.centralwidget)
244 | self.menubar = QtWidgets.QMenuBar(MainWindow)
245 | self.menubar.setGeometry(QtCore.QRect(0, 0, 774, 26))
246 | self.menubar.setObjectName("menubar")
247 | self.menu = QtWidgets.QMenu(self.menubar)
248 | self.menu.setObjectName("menu")
249 | self.menu_2 = QtWidgets.QMenu(self.menubar)
250 | self.menu_2.setObjectName("menu_2")
251 | self.menu_3 = QtWidgets.QMenu(self.menubar)
252 | self.menu_3.setObjectName("menu_3")
253 | self.menu_4 = QtWidgets.QMenu(self.menubar)
254 | self.menu_4.setObjectName("menu_4")
255 | MainWindow.setMenuBar(self.menubar)
256 | self.statusbar = QtWidgets.QStatusBar(MainWindow)
257 | font = QtGui.QFont()
258 | font.setFamily("微软雅黑")
259 | font.setPointSize(8)
260 | self.statusbar.setFont(font)
261 | self.statusbar.setObjectName("statusbar")
262 | MainWindow.setStatusBar(self.statusbar)
263 | self.menubar.addAction(self.menu.menuAction())
264 | self.menubar.addAction(self.menu_2.menuAction())
265 | self.menubar.addAction(self.menu_3.menuAction())
266 | self.menubar.addAction(self.menu_4.menuAction())
267 |
268 | self.retranslateUi(MainWindow)
269 | QtCore.QMetaObject.connectSlotsByName(MainWindow)
270 |
271 | def retranslateUi(self, MainWindow):
272 | _translate = QtCore.QCoreApplication.translate
273 | MainWindow.setWindowTitle(_translate("MainWindow", "AutoNuitka"))
274 | self.groupBox.setTitle(_translate("MainWindow", "package method"))
275 | self.checkBox.setText(_translate("MainWindow", "--follow-imports"))
276 | self.checkBox_2.setText(_translate("MainWindow", "--mingw64"))
277 | self.checkBox_3.setText(_translate("MainWindow", "--standalone"))
278 | self.checkBox_4.setText(_translate("MainWindow", "--onefile"))
279 | self.checkBox_5.setText(_translate("MainWindow", "--show-memory"))
280 | self.checkBox_6.setText(_translate("MainWindow", "--show-progress"))
281 | self.checkBox_7.setText(_translate("MainWindow", "--module "))
282 | self.checkBox_8.setText(_translate("MainWindow", "--nofollow-imports"))
283 | self.checkBox_10.setText(_translate("MainWindow", "--msvc64"))
284 | self.checkBox_9.setText(_translate("MainWindow", "--include-plugin-pyqt5"))
285 | self.checkBox_17.setText(_translate("MainWindow", "--include-plugin-numpy"))
286 | self.checkBox_20.setText(_translate("MainWindow", "--include-plugin-torch"))
287 | self.groupBox_2.setTitle(_translate("MainWindow", "Parameter Setting"))
288 | self.label_3.setText(_translate("MainWindow", "--nofollow-import-to"))
289 | self.lineEdit_3.setText(_translate("MainWindow", "Enter module/package ;Separate them with commas"))
290 | self.pushButton_3.setText(_translate("MainWindow", "Add"))
291 | self.pushButton_10.setText(_translate("MainWindow", "Remove"))
292 | self.label_5.setText(_translate("MainWindow", "--include-package"))
293 | self.lineEdit_4.setText(_translate("MainWindow", "Select the folder you want to compile"))
294 | self.pushButton_4.setText(_translate("MainWindow", "Add"))
295 | self.pushButton_12.setText(_translate("MainWindow", "Remove"))
296 | self.label_6.setText(_translate("MainWindow", "--include-data-files"))
297 | self.pushButton_5.setText(_translate("MainWindow", "Add"))
298 | self.pushButton_14.setText(_translate("MainWindow", "Remove"))
299 | self.label_7.setText(_translate("MainWindow", "--include-data-dir"))
300 | self.pushButton_15.setText(_translate("MainWindow", "Add"))
301 | self.pushButton_16.setText(_translate("MainWindow", "Remove"))
302 | self.label_8.setText(_translate("MainWindow", "--follow-import-to"))
303 | self.lineEdit_9.setText(_translate("MainWindow", "Default to the entire module"))
304 | self.pushButton_17.setText(_translate("MainWindow", "Remove"))
305 | self.pushButton_18.setText(_translate("MainWindow", "Add"))
306 | self.label_4.setText(_translate("MainWindow", " Icons"))
307 | self.lineEdit_6.setText(_translate("MainWindow", "Select icon"))
308 | self.pushButton_19.setText(_translate("MainWindow", "Remove"))
309 | self.pushButton_20.setText(_translate("MainWindow", "Add"))
310 | self.radioButton.setText(_translate("MainWindow", "windows"))
311 | self.radioButton_2.setText(_translate("MainWindow", "console"))
312 | self.pushButton_7.setText(_translate("MainWindow", "Start package"))
313 | self.pushButton_8.setText(_translate("MainWindow", "stop"))
314 | self.pushButton_9.setText(_translate("MainWindow", "Quite"))
315 | self.label.setText(_translate("MainWindow", "Manin File/Module"))
316 | self.pushButton.setText(_translate("MainWindow", "choose"))
317 | self.label_2.setText(_translate("MainWindow", "OutPut Path "))
318 | self.pushButton_2.setText(_translate("MainWindow", "choose"))
319 | self.groupBox_3.setTitle(_translate("MainWindow", "other plugin"))
320 | self.checkBox_11.setText(_translate("MainWindow", "--include-plugin-matplotlib"))
321 | self.checkBox_13.setText(_translate("MainWindow", "--include-plugin-pyqt6"))
322 | self.checkBox_15.setText(_translate("MainWindow", "--include-plugin-pyside2"))
323 | self.checkBox_12.setText(_translate("MainWindow", "--include-plugin-pyside6"))
324 | self.checkBox_18.setText(_translate("MainWindow", "--include-plugin-no-qt5"))
325 | self.checkBox_19.setText(_translate("MainWindow", "--include-plugin-tensorflow"))
326 | self.checkBox_22.setText(_translate("MainWindow", "--include-plugin-upx"))
327 | self.checkBox_23.setText(_translate("MainWindow", "--include-plugin-trio"))
328 | self.checkBox_24.setText(_translate("MainWindow", "--include-plugin-tk-inter"))
329 | self.checkBox_25.setText(_translate("MainWindow", "--include-plugin-pywebview"))
330 | self.checkBox_14.setText(_translate("MainWindow", "--include-plugin-multiprocessing"))
331 | self.menu.setTitle(_translate("MainWindow", "File"))
332 | self.menu_2.setTitle(_translate("MainWindow", "Edit"))
333 | self.menu_3.setTitle(_translate("MainWindow", "Setting"))
334 | self.menu_4.setTitle(_translate("MainWindow", "Help"))
335 |
--------------------------------------------------------------------------------
/src/mainui.ui:
--------------------------------------------------------------------------------
1 |
2 |
3 | MainWindow
4 |
5 |
6 |
7 | 0
8 | 0
9 | 774
10 | 774
11 |
12 |
13 |
14 |
15 | 微软雅黑
16 | 12
17 |
18 |
19 |
20 | AutoNuitka
21 |
22 |
23 |
24 |
25 |
26 | 20
27 | 90
28 | 731
29 | 141
30 |
31 |
32 |
33 | package method
34 |
35 |
36 |
37 |
38 | 20
39 | 40
40 | 151
41 | 17
42 |
43 |
44 |
45 | --follow-imports
46 |
47 |
48 |
49 |
50 |
51 | 200
52 | 100
53 | 111
54 | 21
55 |
56 |
57 |
58 | --mingw64
59 |
60 |
61 |
62 |
63 |
64 | 200
65 | 40
66 | 141
67 | 17
68 |
69 |
70 |
71 | --standalone
72 |
73 |
74 |
75 |
76 |
77 | 200
78 | 70
79 | 141
80 | 17
81 |
82 |
83 |
84 | --onefile
85 |
86 |
87 |
88 |
89 |
90 | 330
91 | 40
92 | 151
93 | 21
94 |
95 |
96 |
97 | --show-memory
98 |
99 |
100 |
101 |
102 |
103 | 330
104 | 70
105 | 151
106 | 17
107 |
108 |
109 |
110 | --show-progress
111 |
112 |
113 |
114 |
115 |
116 | 20
117 | 100
118 | 91
119 | 17
120 |
121 |
122 |
123 | --module
124 |
125 |
126 |
127 |
128 |
129 | 20
130 | 70
131 | 171
132 | 17
133 |
134 |
135 |
136 | --nofollow-imports
137 |
138 |
139 |
140 |
141 |
142 | 330
143 | 100
144 | 101
145 | 21
146 |
147 |
148 |
149 | --msvc64
150 |
151 |
152 |
153 |
154 |
155 | 500
156 | 40
157 | 221
158 | 21
159 |
160 |
161 |
162 | --include-plugin-pyqt5
163 |
164 |
165 |
166 |
167 |
168 | 500
169 | 70
170 | 211
171 | 17
172 |
173 |
174 |
175 | --include-plugin-numpy
176 |
177 |
178 |
179 |
180 |
181 | 500
182 | 100
183 | 211
184 | 17
185 |
186 |
187 |
188 | --include-plugin-torch
189 |
190 |
191 |
192 |
193 |
194 |
195 | 20
196 | 410
197 | 731
198 | 241
199 |
200 |
201 |
202 | Parameter Setting
203 |
204 |
205 |
206 |
207 | 20
208 | 30
209 | 171
210 | 21
211 |
212 |
213 |
214 | --nofollow-import-to
215 |
216 |
217 |
218 |
219 |
220 | 200
221 | 30
222 | 331
223 | 21
224 |
225 |
226 |
227 |
228 | 微软雅黑
229 | 9
230 |
231 |
232 |
233 | Enter module/package ;Separate them with commas
234 |
235 |
236 |
237 |
238 |
239 | 550
240 | 30
241 | 75
242 | 23
243 |
244 |
245 |
246 | Add
247 |
248 |
249 |
250 |
251 |
252 | 640
253 | 30
254 | 75
255 | 23
256 |
257 |
258 |
259 | Remove
260 |
261 |
262 |
263 |
264 |
265 | 20
266 | 150
267 | 271
268 | 21
269 |
270 |
271 |
272 | --include-package
273 |
274 |
275 |
276 |
277 |
278 | 200
279 | 60
280 | 331
281 | 21
282 |
283 |
284 |
285 |
286 | 微软雅黑
287 | 9
288 |
289 |
290 |
291 | Select the folder you want to compile
292 |
293 |
294 |
295 |
296 |
297 | 550
298 | 60
299 | 75
300 | 23
301 |
302 |
303 |
304 | Add
305 |
306 |
307 |
308 |
309 |
310 | 640
311 | 60
312 | 75
313 | 23
314 |
315 |
316 |
317 | Remove
318 |
319 |
320 |
321 |
322 |
323 | 20
324 | 90
325 | 271
326 | 21
327 |
328 |
329 |
330 | --include-data-files
331 |
332 |
333 |
334 |
335 | false
336 |
337 |
338 |
339 | 200
340 | 90
341 | 331
342 | 21
343 |
344 |
345 |
346 |
347 | 微软雅黑
348 | 9
349 |
350 |
351 |
352 |
353 |
354 |
355 | 550
356 | 90
357 | 75
358 | 23
359 |
360 |
361 |
362 | Add
363 |
364 |
365 |
366 |
367 |
368 | 640
369 | 90
370 | 75
371 | 23
372 |
373 |
374 |
375 | Remove
376 |
377 |
378 |
379 |
380 |
381 | 20
382 | 120
383 | 151
384 | 21
385 |
386 |
387 |
388 | --include-data-dir
389 |
390 |
391 |
392 |
393 | false
394 |
395 |
396 |
397 | 200
398 | 120
399 | 331
400 | 21
401 |
402 |
403 |
404 |
405 | 微软雅黑
406 | 9
407 |
408 |
409 |
410 |
411 |
412 |
413 | 550
414 | 120
415 | 75
416 | 23
417 |
418 |
419 |
420 | Add
421 |
422 |
423 |
424 |
425 |
426 | 640
427 | 120
428 | 75
429 | 23
430 |
431 |
432 |
433 | Remove
434 |
435 |
436 |
437 |
438 |
439 | 20
440 | 60
441 | 171
442 | 21
443 |
444 |
445 |
446 | --follow-import-to
447 |
448 |
449 |
450 |
451 |
452 | 200
453 | 150
454 | 331
455 | 21
456 |
457 |
458 |
459 |
460 | 微软雅黑
461 | 9
462 |
463 |
464 |
465 | Default to the entire module
466 |
467 |
468 |
469 |
470 |
471 | 640
472 | 150
473 | 75
474 | 23
475 |
476 |
477 |
478 | Remove
479 |
480 |
481 |
482 |
483 |
484 | 550
485 | 150
486 | 75
487 | 23
488 |
489 |
490 |
491 | Add
492 |
493 |
494 |
495 |
496 |
497 | 20
498 | 180
499 | 61
500 | 21
501 |
502 |
503 |
504 | Icons
505 |
506 |
507 |
508 |
509 |
510 | 200
511 | 180
512 | 331
513 | 21
514 |
515 |
516 |
517 |
518 | 微软雅黑
519 | 9
520 |
521 |
522 |
523 | Select icon
524 |
525 |
526 |
527 |
528 |
529 | 640
530 | 180
531 | 75
532 | 23
533 |
534 |
535 |
536 | Remove
537 |
538 |
539 |
540 |
541 |
542 | 550
543 | 180
544 | 75
545 | 23
546 |
547 |
548 |
549 | Add
550 |
551 |
552 |
553 |
554 |
555 | 200
556 | 210
557 | 89
558 | 17
559 |
560 |
561 |
562 | windows
563 |
564 |
565 |
566 |
567 |
568 | 360
569 | 210
570 | 101
571 | 17
572 |
573 |
574 |
575 | console
576 |
577 |
578 |
579 |
580 |
581 |
582 | 140
583 | 680
584 | 131
585 | 31
586 |
587 |
588 |
589 | Start package
590 |
591 |
592 |
593 |
594 |
595 | 340
596 | 680
597 | 101
598 | 31
599 |
600 |
601 |
602 | stop
603 |
604 |
605 |
606 |
607 |
608 | 500
609 | 680
610 | 101
611 | 31
612 |
613 |
614 |
615 | Quite
616 |
617 |
618 |
619 |
620 |
621 | 20
622 | 10
623 | 721
624 | 33
625 |
626 |
627 |
628 | -
629 |
630 |
631 | Manin File/Module
632 |
633 |
634 |
635 | -
636 |
637 |
638 | -
639 |
640 |
641 | choose
642 |
643 |
644 |
645 |
646 |
647 |
648 |
649 |
650 | 21
651 | 50
652 | 721
653 | 33
654 |
655 |
656 |
657 | -
658 |
659 |
660 | OutPut Path
661 |
662 |
663 |
664 | -
665 |
666 |
667 | -
668 |
669 |
670 | choose
671 |
672 |
673 |
674 |
675 |
676 |
677 |
678 |
679 | 20
680 | 240
681 | 731
682 | 161
683 |
684 |
685 |
686 | other plugin
687 |
688 |
689 |
690 |
691 | 20
692 | 30
693 | 231
694 | 21
695 |
696 |
697 |
698 | --include-plugin-matplotlib
699 |
700 |
701 |
702 |
703 |
704 | 260
705 | 30
706 | 201
707 | 21
708 |
709 |
710 |
711 | --include-plugin-pyqt6
712 |
713 |
714 |
715 |
716 |
717 | 500
718 | 30
719 | 211
720 | 21
721 |
722 |
723 |
724 | --include-plugin-pyside2
725 |
726 |
727 |
728 |
729 |
730 | 20
731 | 60
732 | 221
733 | 21
734 |
735 |
736 |
737 | --include-plugin-pyside6
738 |
739 |
740 |
741 |
742 |
743 | 260
744 | 60
745 | 201
746 | 21
747 |
748 |
749 |
750 | --include-plugin-no-qt5
751 |
752 |
753 |
754 |
755 |
756 | 20
757 | 90
758 | 231
759 | 21
760 |
761 |
762 |
763 | --include-plugin-tensorflow
764 |
765 |
766 |
767 |
768 |
769 | 500
770 | 60
771 | 201
772 | 21
773 |
774 |
775 |
776 | --include-plugin-upx
777 |
778 |
779 |
780 |
781 |
782 | 20
783 | 120
784 | 201
785 | 21
786 |
787 |
788 |
789 | --include-plugin-trio
790 |
791 |
792 |
793 |
794 |
795 | 500
796 | 90
797 | 211
798 | 21
799 |
800 |
801 |
802 | --include-plugin-tk-inter
803 |
804 |
805 |
806 |
807 |
808 | 260
809 | 90
810 | 241
811 | 21
812 |
813 |
814 |
815 | --include-plugin-pywebview
816 |
817 |
818 |
819 |
820 |
821 | 260
822 | 120
823 | 281
824 | 21
825 |
826 |
827 |
828 | --include-plugin-multiprocessing
829 |
830 |
831 |
832 |
833 |
867 |
868 |
869 |
870 | 微软雅黑
871 | 8
872 |
873 |
874 |
875 |
876 |
877 |
878 |
879 |
--------------------------------------------------------------------------------