Python Forum
[cx_Freeze] Build .exe they get more .py files, help needed !
Thread Rating:
  • 1 Vote(s) - 1 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[cx_Freeze] Build .exe they get more .py files, help needed !
#1
Hey Programmers, Game Developers and Software Writers...

I know how i can build .exes from an simgle .py file, but now i want to know,
how i can build .exe (executable programs) from more imported .py files...

I want to can write software they get more .py files imported they i write...
I try to create executable programs they get more scripts imported (.py files),
but i don't know how can i make an executable program with all my scripts they
heart by my program, writted in python...

Can anyone help me ?... Thanks,
Jamie.
Reply
#2
A little basic.
1 python file that's imported is  called a module.
More than 1 file working together is often called a package.
Using __init__.py as glue to navigate the file tree.

So a game can have many files,and often a main python file that start the game.
Can look a silly setup where more than one file work together.

Folder setup:
my_game/
 |-- __init__.py
 |-- start_game.py
 sub_folder/
   |-- __init__.py
   |-- game_module_1.py
   |-- game_module_2.py
start_game.py:
import random
import time
from sub_folder import game_module_1, game_module_2

def game():
    time.sleep(5)
    return random.choice([game_module_1.motor_1(), game_module_2.motor_2()])

print('Dos the motor start???')
if game() == 'start motor':
    print('The motor did start')
else:
    print('The motor did not start')
__init__.py:
from .sub_folder import motor_1
from .sub_folder import motor_2
game_module_1.py:
def motor_1():
    return 'start motor'
game_module_2.py:
def motor_2():
    return 'Stop motor'
The __init__.py in sub folder is empty.

Running this game:
Output:
C:\1\my_game λ python start_game.py Dos the motor start??? The motor did not start C:\1\my_game λ python start_game.py Dos the motor start??? The motor did start C:\1\my_game λ python start_game.py Dos the motor start??? The motor did not start
Reply
#3
OK... that is whats i means with more .py files, but how do i build an .exe file with all .py files
in one build, using cx_Freeze ?, that is just my question !...

Can you tell me about how i can build just an .exe with all my .py files in one ?...

Thanks, Jamie...
Reply
#4
You call the one file that start the game.
As it's package all work together and other files are imported into start_game.py.

Example Pyinstaller:
I add one line so console window don't disappear.
In a game or GUI there is main loop that run all time until exit.
For console it's not like that.
input('Press enter to exit')
In my_game folder i run:
(cx) C:\1\cx\my_game
λ pyinstaller --onefile start_game.py
There will be one start_game.exe in dist folder.


cx_Freeze example.
I change to base = 'Console' and call start_game.py.
#cx_run.py
from cx_Freeze import setup,Executable
import sys

# Replaces commandline arg 'build'
#sys.argv.append("build")

# If need to include/exclude module/packages
includes =
excludes =
packages =

# Console or Win32GUI
base = None
if sys.platform == "win32":
    base = 'Console'
    #base = 'Win32GUI'


# Name of file to make ".exe" of
filename = "start_game.py"
setup(
    name = 'Myapp',
    version = '0.1',
    description = 'Cx test',
    options = {'build_exe': {'excludes':excludes,'packages':packages,'includes':includes}},
    executables = [Executable(filename, base=base, icon=None)])

#--|  From command line
#python cx_run.py build
From command line:
(cx) C:\1\cx\my_game
λ python cx_run.py build
For more on building stuff for Python like Wheel and use PyPi.
Look at my tutorial here.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Failed tkinter Compile In Custom 3.7.2 Build Using Custom Tcl/Tk Build gwc 0 2,563 Jan-25-2019, 01:56 PM
Last Post: gwc
  [cx_Freeze] CMD Prompt can't find my setup.py, help needed ! JamieVanCadsand 1 3,755 Sep-30-2017, 10:10 PM
Last Post: snippsat

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020