单击应用程序时,Windows- Pyinstaller错误“无法执行脚本”

时间:2019-05-15 14:35:47

标签: python python-3.x python-2.7 exe pyinstaller

我是Python编码的新手,刚完成我的第一个python脚本 我正在尝试发布程序,以便可以在其他设备上安装。

但是当我使用pyinstaller将其从.py转换为.exe并尝试运行程序时,它给了我错误:

严重错误:无法执行股息

我用来转换的代码:

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 :(得分:0)

我猜您只有一个脚本,所以如果您使用:

Pyinstaller --onefile yourScript.py

yourScript.py替换为CMD /终端中的python文件名,您应该不会有任何问题。

如果您缺少二进制文件,这将有所帮助。例如pyinstaller缺少货币转换器模块,所以我找到了它,并得到了zip文件,然后在CMD中运行了该文件:

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

其中myScript.py是我的Python脚本,链接指向包含二进制zip文件的文件夹。

答案 1 :(得分:0)

通常,这是由于打包时缺少文件所致。

使用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'),
         ],
         ...
    )

这里是一个模拟项目,其中包含UIother文件夹。就像元组('full path', 'folder name')

如果在Windows上具有* .dll或在Linux上具有* .so,则必须写入binaries

a.binaries = a.binaries + [('libsha1.so','/home/iot/lib/libsha1.so','BINARY')]