python приложение, собранное pyinstaller, не запускается с ошибкой через cmd, но работает, если кликнуть мышкой
Написал приложение на pyqt5 и скомпилировал через pyinstaller (версия 5.13.2, пересобрал загрузчик что бы не жаловались антивирусы)
Если запускать как обычно (двойной клик лкм) или ставить в автозапуск, то всё работает, приложение запускается как надо.
НО если запускать через cmd ("<файл>" или "start <файл>"), то я получаю ошибку:
Traceback (most recent call last):
File "client_main.py", line 479, in <module>
OSError: [WinError 123] Синтаксическая ошибка в имени файла, имени папки или метке тома: ''
В данной программе главным файлом действительно является client_main.py
Заранее спасибо!)
Дополнено:
Программа использует 1 файл, который она создаёт сама, но умеет запускаться без него и около 3 файлов, которые включены в exe файл при компиляции. В рамках этого вопроса все запуски были в папке только с самой программой и ничем более. Кроме того, я пробовал вызывать start с указанием рабочего пространства (/D), но результат тот же.
spec файла сейчас добавить не могу, но вечером будет. Ничего необычного там вроде нет
файл имеет путь Downloads/tmp/tmp.exe (смена имени файла ни к чему не привела)
запускаю файл из каталога где лежит сама программа (Downloads/tmp)
запускал через команды "tmp.exe", "start tmp.exe", "start tmp.exe /D Downloads/tmp" (путь указывал начиная с C:, но сейчас не имею доступа к пк, что бы сказать полный путь). Напомню, что если кликнуть 2 раза по tmp.exe мышкой (обычный запуск обычного человека), то программа запускается корректно, всё работает
пересобрал загрузчик по этой инструкции https://stackoverflow.com/a/65876921/21434146 кроме 4 пункта (там использовал команду "pip install .")
файл "client_main.py", как я уже писал выше, действительно является главным файлом и для запуска всей программы надо запускать его.
та часть, что не влезла на скрине полостью совпадает с той ошибкой, что я приложил в текстовом виде
spec файл:
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(
['client_main.py'],
pathex=[],
binaries=[],
datas=[('pub.txt', '.'), ('tray_icon.ico', '.')],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
[],
name='tmp',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=['tray_icon.ico'],
)
Ответы (1 шт):
Нашёл +- решение. При 2 клике лкм файл открывается через explorer (так, например, если вы откроете pdf, то вас спросят чем его открыть). Вот я просто стал в cmd запускать через explorer. Не идеал, но работает, а так как в моём случае это вовсе не основная часть программы, то тратить на неё часов 5 без гарантий я не хочу))
конечная команда: "explorer <ваша программа>" (например "explorer tmp.exe")