Windows - Pyinstaller Ошибка «не удалось выполнить скрипт» при нажатии приложения - PullRequest
0 голосов
/ 15 мая 2019

Я новичок в Python Coding и только что закончил свой первый скрипт на Python. Я пытаюсь опубликовать свою программу, чтобы установить ее на другое устройство.

Но как только я конвертирую ее из .py до .exe с помощью pyinstaller и попытка запустить мою программу выдает ошибку:

фатальная ошибка: не удалось выполнить скрипт

код, который я использовал дляconvert:

pyinstaller -w file_name.py
pyinstaller -F file_name.py
pyinstaller -i "c:\\icon_file path" file_name.py

Я просто пропущен как шаг или есть что-то еще, что я могу попытаться решить эту проблему?Я обычно пишу код на Visual studio, и когда я тестирую, все работает нормально.

Мой .spec файл:

    block_cipher = None


    a = Analysis(['file_name.py'],
                 pathex=['C:\\Users\\MainUser\\Desktop\\Publishing'],
                 binaries=[],
                 datas=[],
                 hiddenimports=[],
                 hookspath=[],
                 runtime_hooks=[],
                 excludes=[],                
                 win_no_prefer_redirects=False,
                 win_private_assemblies=False,
                 cipher=block_cipher,
                 noarchive=False)
    a.binaries = a.binaries + 
                 [('libsha1.dll','/home/iot/lib/libsha1.dll','BINARY')]
    pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
    exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          [],
          name='file_name',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          runtime_tmpdir=None,
          console=True )
```

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Обычно это происходит из-за отсутствия файла при упаковке.

Когда вы используете PyInstaller, вы можете использовать его следующим образом:

python -m PyInstaller .\yourFile.py

затем файл yourFile.specгенерируется в этой папке.

Вы должны отредактировать этот файл, добавить весь файл проекта в datas,

a = Analysis(['yourFile.py'],
         pathex=['D:\\projectPath\\project'],
         binaries=[],
         datas=[('D:\\projectPath\\project\\*.py', '.'),
                ('D:\\projectPath\\project\\UI\\*.ui', 'UI'),
                ('D:\\projectPath\\project\\other\\*.py', 'other'),
         ],
         ...
    )

Это смоделировано здесь, проект, который содержит UI иother папок.Это как кортеж: ('full path', 'folder name').

Если у вас есть * .dll в Windows или * .so в Linux, вы должны записать в binaries:

a.binaries = a.binaries + [('libsha1.so','/home/iot/lib/libsha1.so','BINARY')]
0 голосов
/ 15 мая 2019

Я предполагаю, что у вас есть только один скрипт, поэтому, если вы используете:

Pyinstaller --onefile yourScript.py

Замена yourScript.py именем вашего файла Python в CMD / Terminal, у вас не должно возникнуть никаких проблем.

Если вам не хватает двоичного файла, это должно помочь. Например, в pyinstaller отсутствовал модуль конвертации валют, поэтому я нашел его, получил zip-файл и запустил его в CMD:

Pyinstaller --add-binary "C:\Users\myName\Downloads\eurofxref-hist.zip";currency_converter --onefile myScript.py

Где myScript.py - мой скрипт на Python, а ссылка на папку с двоичным zip-файлом.

...