swright573
swright573

Reputation: 41

Pyinstaller 3.5 will not generate a standalone executable

I am trying to get Pyinstaller 3.5 to create a "onefile" executable but it keeps generating a "onedir" instead.

My files are all in one directory. There is a main program that imports two other modules which in turn import a third. The program functions properly when run directly in Python 3.7.4. The "onedir" version generated by Pyinstaller also works. I'm running 64 bit Windows 10 Pro on a Surface Book 2.

The command I'm using to generate the file is:

pyinstaller --onefile --windowed --additional-hooks-dir=. qualys_admin.spec

My program uses wx, pubsub, xmltodict, requests, and pandas. The additional hook file is for xlrd which pandas needs to read a xlsx file.

My spec file looks like this:

# -*- mode: python ; coding: utf-8 -*-

block_cipher = None

# work-around for https://github.com/pyinstaller/pyinstaller/issues/4064
import distutils
if distutils.distutils_path.endswith('__init__.py'): 
    distutils.distutils_path = os.path.dirname(distutils.distutils_path)

addedfiles = ('qualys_admin.ini', '.')

a = Analysis(['qualys_admin.py'],
             pathex=['C:\\Users\\secops-sw\\Documents\\qualys- 
administration\\qualysadmin'],
             binaries=[],
             datas=[addedfiles],
             hiddenimports=[],
             hookspath=[],
             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,
          [],
          exclude_binaries=True,
          name='qualys_admin',
          debug=False,
          bootloader_ignore_signals=False,
          strip=False,
          upx=True,
          console=True )
coll = COLLECT(exe,
               a.binaries,
               a.zipfiles,
               a.datas,
               strip=False,
               upx=True,
               upx_exclude=[],
               name='qualys_admin')

I wrote a tiny "hello world" program to take the complexity of my program off the table. I was able to generate both a "onedir" and a "onefile" successfuly. So I know where to look for the standalone executable.

For my qualys_admin app, that executable is definitely not being generated and I cannot find any warnings to indicate why.

Does anyone have any ideas?

Upvotes: 0

Views: 663

Answers (1)

Robert Kearns
Robert Kearns

Reputation: 1706

It is not working because your spec file is configured for one directory mode. You need to create the spec file with the one file flag.

pyi-makespec --onefile yourscript.py 

Then you can modify your spec sheet and build the app using the custom spec sheet.

Upvotes: 1

Related Questions