Не конвертируется из .py файла в .exe
Перепробовал все советы с интернета. Ничего не помогло.
Есть код:
from subprocess import check_output
from socket import gethostname, getfqdn
import psutil
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore import Qt
def Subprocess_Command(*args): # Вызов команды/сохранение команды в переменную
return check_output(*args, universal_newlines=True, encoding='cp866')
def Hostname(): # Узнаем имя хоста
try:
h_name = gethostname()
except Exception:
h_name = 'Не удалось получить имя хоста'
return h_name
def Domain(): # Узнаем домен(рабочую группу)
return getfqdn().split('.', 1)[1]
def ping_server(): # Проверка соединения с сервером
try:
Subprocess_Command(['ping', '(...)'])
return None
except Exception:
return 1
def Ip_Mac(): # Узнаем IP и MAC адрес
interfaces = psutil.net_if_addrs()
list_configs_interfaces = []
list_valid_ip = []
for interface in interfaces:
for int_configs in interfaces[interface]:
configs = int_configs
if str(configs[0]) == 'AddressFamily.AF_INET':
ip_add = configs[1]
x = interfaces[interface]
for i in x:
for y in i:
if str(y) == 'AddressFamily.AF_LINK':
mac_add = i[1]
str_var = f'{str(interface)} : {str(ip_add)}, {str(mac_add)}'
list_configs_interfaces.append(str_var)
list_valid_ip.append(str(ip_add))
return list_configs_interfaces, list_valid_ip
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setFixedSize(800, 600)
MainWindow.setMouseTracking(True)
MainWindow.setFocusPolicy(QtCore.Qt.NoFocus)
MainWindow.setAutoFillBackground(True)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.Developer = QtWidgets.QLabel(self.centralwidget)
self.Developer.setGeometry(QtCore.QRect(10, 585, 261, 16))
self.Developer.setObjectName("Developer")
self.widget = QtWidgets.QWidget(self.centralwidget)
self.widget.setGeometry(QtCore.QRect(0, 585, 800, 16))
self.widget.setStyleSheet("background-color: rgb(63, 197, 255);")
self.widget.setObjectName("widget")
self.info = QtWidgets.QLabel(self.centralwidget)
self.info.setGeometry(QtCore.QRect(0, 0, 800, 16))
self.info.setStyleSheet("background-color: rgb(63, 197, 255);")
self.info.setObjectName("info")
self.Hostname0 = QtWidgets.QLabel(self.centralwidget)
self.Hostname0.setGeometry(QtCore.QRect(10, 50, 191, 16))
self.Hostname0.setObjectName("Hostname0")
self.Hostname0.setTextInteractionFlags(Qt.TextSelectableByMouse)
self.Domain0 = QtWidgets.QLabel(self.centralwidget)
self.Domain0.setGeometry(QtCore.QRect(10, 70, 50, 16))
self.Domain0.setObjectName("Domain0")
self.Domain0.setTextInteractionFlags(Qt.TextSelectableByMouse)
self.Interfaces0 = QtWidgets.QLabel(self.centralwidget)
self.Interfaces0.setGeometry(QtCore.QRect(10, 90, 80, 16))
self.Interfaces0.setObjectName("Interfaces0")
self.Interfaces0.setTextInteractionFlags(Qt.TextSelectableByMouse)
self.Connecting_to_the_server0 = QtWidgets.QLabel(self.centralwidget)
self.Connecting_to_the_server0.setGeometry(QtCore.QRect(10, 30, 161, 16))
self.Connecting_to_the_server0.setObjectName("Connecting_to_the_server0")
self.Connecting_to_the_server0.setTextInteractionFlags(Qt.TextSelectableByMouse)
self.widget_2 = QtWidgets.QWidget(self.centralwidget)
self.widget_2.setGeometry(QtCore.QRect(0, 544, 800, 41))
self.widget_2.setStyleSheet("\n"
"background-color: rgb(73, 225, 255);")
self.widget_2.setObjectName("widget_2")
self.btn_connecting_to_the_server = QtWidgets.QPushButton(self.centralwidget)
self.btn_connecting_to_the_server.setGeometry(QtCore.QRect(300, 30, 81, 18))
self.btn_connecting_to_the_server.setStyleSheet("background-color: rgb(23, 189, 255);")
self.btn_connecting_to_the_server.setObjectName("btn_connecting_to_the_server")
self.btn_update = QtWidgets.QPushButton(self.widget_2)
self.btn_update.setGeometry(QtCore.QRect(150, 10, 550, 20))
self.btn_update.setStyleSheet("background-color: rgb(23, 189, 255);")
self.btn_update.setObjectName("btn_update")
self.Connecting_to_the_server1 = QtWidgets.QLabel(self.centralwidget)
self.Connecting_to_the_server1.setGeometry(QtCore.QRect(190, 30, 101, 16))
self.Connecting_to_the_server1.setText("")
self.Connecting_to_the_server1.setObjectName("Connecting_to_the_server1")
self.Connecting_to_the_server1.setTextInteractionFlags(Qt.TextSelectableByMouse)
self.Hostname1 = QtWidgets.QLabel(self.centralwidget)
self.Hostname1.setGeometry(QtCore.QRect(219, 50, 581, 16))
self.Hostname1.setText("")
self.Hostname1.setObjectName("Hostname1")
self.Hostname1.setTextInteractionFlags(Qt.TextSelectableByMouse)
self.Domain1 = QtWidgets.QLabel(self.centralwidget)
self.Domain1.setGeometry(QtCore.QRect(70, 70, 731, 16))
self.Domain1.setText("")
self.Domain1.setObjectName("Domain1")
self.Domain1.setTextInteractionFlags(Qt.TextSelectableByMouse)
self.Interfaces1 = QtWidgets.QLabel(self.centralwidget)
self.Interfaces1.setGeometry(QtCore.QRect(40, 110, 60, 16))
self.Interfaces1.setObjectName("Interfaces1")
self.Interfaces1.setTextInteractionFlags(Qt.TextSelectableByMouse)
self.widget.raise_()
self.Developer.raise_()
self.info.raise_()
self.Hostname0.raise_()
self.Domain0.raise_()
self.Interfaces0.raise_()
self.Connecting_to_the_server0.raise_()
self.widget_2.raise_()
self.Connecting_to_the_server1.raise_()
self.Hostname1.raise_()
self.Domain1.raise_()
self.Interfaces1.raise_()
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
self.add_functions()
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Быстрый просмотр сетевых настроек"))
self.Developer.setText(_translate("MainWindow", "Разработчик: Ахмадеев Булат Наилевич"))
self.info.setText(_translate("MainWindow",
" Программа создана специально для ..., для быстрого просмотра сетевых настроек."))
self.Hostname0.setText(_translate("MainWindow", "Имя хоста (Имя компьютера):"))
self.Domain0.setText(_translate("MainWindow", "Домен:"))
self.Interfaces0.setText(_translate("MainWindow", "Интерфейс:"))
self.Connecting_to_the_server0.setText(_translate("MainWindow", "Подключение к серверу:"))
self.btn_update.setText(_translate("MainWindow", "Обновить"))
self.btn_connecting_to_the_server.setText(_translate("MainWindow", "Проверить"))
def add_functions(self):
self.btn_update.clicked.connect(self.update_info)
self.btn_connecting_to_the_server.clicked.connect(self.conn_serv)
def conn_serv(self):
if ping_server() is None:
self.Connecting_to_the_server1.setText('Присутствует')
else:
self.Connecting_to_the_server1.setText('Отсутствует')
def update_info(self):
self.Hostname1.setText(Hostname())
self.Domain1.setText(Domain())
list_interfaces = []
str_interfaces = ''
for elem in Ip_Mac()[0]:
list_interfaces.append(elem)
list_interfaces.append('\n')
for i in list_interfaces:
str_interfaces = str_interfaces + i
self.Interfaces1.setText(str_interfaces)
self.Interfaces1.adjustSize()
# def save_info(self):
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Сам код работает:
На красоту не смотрите, моя задача сейчас просто конвертировать его в .exe.
Пытаюсь конвертировать в .exe файл командой:pyinstaller 'файл'. Вывод: Выдает ошибку, что он не нашел плагины PyQt5.
Один из советов был добавить к команде pyinstaller --exclude-module PyQt5 'файл'.
Вывод: pyinstaller выполнил свою работу, папки dist и build создались, но файл.exe запускается(как консоль) и моментально закрывается.
Попробовал так: pyinstaller --noconsole --exclude-module PyQt5 'файл'.
Вывод: pyinstaller выполнил свою работу, папки dist и build создались, но при запуске файла.exe выдает это:
Прошу помощи! На Mac OS заработало все отлично, но с Windows какие-то проблемы.
Использую версию Python 3.9. ОС Windows 10
Может проблема в версии Python'на? Или нужно попробовать виртуальный Python? Я уже не знаю что пробовать.
Ответы (1 шт):
В комментариях ответили.
Проблема была в том, что в пути была кириллица. Пришлось создавать нового пользователя.


