0

All of the cx_Freeze examples are for one file (module). I need to make an executable for an entire python package. Why is that hard to make?

Here's my directory:

test1/
  __init__ 
  __main__

The way I run this from the command line is by using the following cmd

python -m test1 

__init__ is empty and __main__ just have a simple print statement. I am using python 3.5.1 but I can switch to python 3.4 if that would fix the problem

Here is my setup.py for win64

from cx_Freeze import setup, Executable
import sys

build_exe_options = {"packages": ['test1'],
                     "include_files": []
                    }
executables = [
                Executable("__main__")
              ]
setup(
    name = "Foo",
    version = "0.1",
    description = "Help please!",
    author = "me",
    options = {"build_exe": build_exe_options},
    executables = executables
)

Update: 1- see the comment below for solution for this approach 2- switch to pyinstaller because it can produce one exe file not a folder

BitsBitsBits
  • 574
  • 1
  • 4
  • 19

1 Answers1

1

Freezing a whole package doesn' t make sense because to create an executable binary you will want a Python script that can be run standalone from the command line. A package normally isn't started out-of-the-box but would get imported by another module.

However you can always import a package in your script so when you freeze it the package gets included in your distribution.

So do something like this:

test1/
  __init__ 
  __main__
run_test.py

run_test.py now imports test1 and starts your function that does whatever you want.

import test1
run_the_whole_thing()

Note: You will need to change your Executable in the setup.py to run_test.py.

MrLeeh
  • 5,321
  • 6
  • 33
  • 51