Pyinstaller automatically includes unneeded modules

15,607

Solution 1

Not sure if this really counts as a solutions. But by ignoring winpython all together and using a standard installation of python that only had pip installs of pyinstaller and pandas added to it I was easily able generate a functional .exe that was 18MB. I guess it had something to do with winpython.

Solution 2

Pyinstaller may have figured those dependencies from your current ones. If you're sure, use --exclude-module flag to list all the modules you want to exclude.

http://pythonhosted.org/PyInstaller/#general-options

Share:
15,607
nickexists
Author by

nickexists

Updated on July 20, 2022

Comments

  • nickexists
    nickexists almost 2 years

    I am trying to create a .exe from a very simple script that I have written. The script only include glob and pandas. But pyinstaller is including matplotlib,numpy,scipy,qt4,ipython, and a bunch of other stuff. The .exe won't run because there is an error with matplotlib, but I don't even need matplotlib. What am I doing wrong to make pyinstaller not recognize that only glob and pandas are needed?

    I have manually excluded scipy,matplotlib,PyQt4,and iPython and the .exe is still 160mb!

    P.S. I'm doing this in winpython with python 3.4.

    Edit: With a little further testing I have narrowed this down to Pandas. Even a script that only consists of:

    import pandas
    

    will create a dist folder that is 460MB or a single file .exe that is 182MB. What is the easiest way that I can find out which modules are being imported so that I can properly exclude all of them?

    Edit2: I have tried making a hook-pandas.py file that contains:

    excludedhooks=['scipy','matplotlib','PIL','cython','PyQt4','zmq']
    

    The console output indicates that imports are being removed due to the hook file, but tons of files from these modules still end up in the dist folder.

    I have also tried excluding these modules in the .spec file as well as in the console using --exclude-module but the files from those modules still show up.

    • Taylan
      Taylan about 8 years
    • nickexists
      nickexists about 8 years
      So i need to go through and manually exclude everything that I don't need? Why would it assume that I was all those modules included?
    • Taylan
      Taylan about 8 years
      Well I do not know that, but I guess the answer is written in the PyInstaller's official manual.
    • user2357112
      user2357112 about 8 years
      Some of that stuff is definitely necessary. Pandas is built upon NumPy, so you'll definitely need NumPy.
    • Peter Badida
      Peter Badida about 8 years
      Wild guess, but don't you have some unnecessary big files(e.g. binaries) in your app folder? PyInstaller may take those into the package too. What's included is in console output afaik.
    • feetwet
      feetwet about 6 years
      Bloat is even worse under Anaconda. Related Git discussion here.