DumbJuice is a Python module that simplifies the process of packaging small Python programs into self-contained installable packages. These packages can be shared with non-technical users, who only need to run a single install.bat file to install Python, set up a virtual environment, install necessary dependencies, and create a shortcut to the program on their desktop.
Project description
DumbJuice
DumbJuice is a Python module that simplifies the process of packaging small Python programs into self-contained installable packages. These packages can be shared with non-technical users, who only need to run a single install.bat file to install Python, set up a virtual environment, install necessary dependencies, and create a shortcut to the program on their desktop.
Installation
To install the dumbjuice module
pip install dumbjuice
Usage
TLDR
- Create a dumbjuice.conf file in your projects base folder with the minimum content (replace MyProgramName with your program's name and update python_version to your python version)
{
"program_name": "MyProgramName",
"python_version": "3.11.7"
}
- Run
dumbjuice-build <project_folder_path> - Test script by running the install.bat file in
dumbjuice_build/ - Send the zipped file in
dumbjuice_distto those you want
Full instructions
Recommended project structure
project_folder/
│
├── main.py # Your main program file
├── dumbjuice.conf # Configuration file for DumbJuice
├── .gitignore (optional) # Git ignore file (optional)
├── requirements.txt # Your program's dependencies (if any)
├── djicon.ico (optional) # Optional icon file for the application
│
├── some_folder/ # Additional folders (optional)
│ ├── other_file.py # Other Python files
│ └── subfolder/ # Nested subfolders (optional)
│ └── another_file.py
│
└── other_script.py # Additional Python script files (optional)
Configuration
The build function needs a json configuration file (dumbjuice.conf) with the following:
{
"program_name": "MyProgramName",
"python_version": "3.11.7",
"gui": false,
"ignore": ["*.git", "*.gitignore"],
"use_gitignore": true,
"include": ["my_module.py"]
}
program_name: The name of your program. (*)
python_version: The Python version to be installed (e.g., "3.8.10") (*)
gui: Set to true if your program requires a GUI; set to false for console programs (default)
ignore: A list of files or directories to be excluded from the build
use_gitignore: Set to true if you want to use .gitignore rules to determine which files to exclude
include: A list of files or directories that should always be included, even if they are in the ignore list
* required
Building
To build the installer for your program, navigate to the folder containing your program's files and configuration, and run the following:
python -m dumbjuice build <target_folder>
Alternatively, if you want to use the command line interface (CLI), you can use the following command:
dumbjuice-build <target_folder>
or in python
import dumbjuice as dj
dj.build(<target_folder>)
target_folder (optional): Path to the folder containing your python program files. If not provided, the current working directory will be used.
Result of a build
project_folder/
│
├── dumbjuice_build/ # Raw build files, can be used to test the installation script
│ ├── install.bat # Install script
│ ├── appfolder/ # Other Python files
│ └── <copied_files> # Everything you haven't excluded through .gitignore or exclude ends up here
│ └── build.ps1 # installation script
│ └── djicon.ico # either your icon.ico icon or the default dumbjuice icon if you didn't provide
├── dumbjuice_dist/ # distribution files
│ ├── <program_name>.zip # zipped contents of dumbjuice_build, ready for distribution
├── main.py # Your main program file
├── dumbjuice.conf # Configuration file for DumbJuice
├── .gitignore (optional) # Git ignore file (optional)
├── requirements.txt # Your program's dependencies (if any)
├── djicon.ico (optional) # Optional icon file for the application
│
├── some_folder/ # Additional folders (optional)
│ ├── other_file.py # Other Python files
│ └── subfolder/ # Nested subfolders (optional)
│ └── another_file.py
│
└── other_script.py # Additional Python script files (optional)
What Happens During the Build Process?
- Your program files, including the
requirements.txtand dumbjuice.conf, are copied into a new folder structure indumbjuice_build/appfolder/ - A
build.ps1file is created that is responsible for installing the program and necessary modules for the user is addeddumbjuice_build/appfolder/ - An
install.batfile which initiates thebuild.ps1on the users end when started is added todumbjuice_build/ - The entire
dumbjuice_buildfolder is zipped and added todumbjuice_dist
What happens during the install process?
- DumbJuice looks for already existing DumbJuice installation and adds it if necessary
- DumbJuice script creates the program structure in
/DumbJuice/Programs/<program_name>and copies over the files inappfolder/ - DumbJuice script install the defined python version (if not present in DumbJuice already), creates a venv for the program and installs all modules defined in
requirements.txt - DumbJuice script creates shortcuts for the user which starts the program
Starting a program
Simply double click the generated <program_name> shortcut, either on the Desktop or in the /DumbJuice/programs/<program_name> folder
Debugging
Sometimes there may be uncaught errors that causes program crashes.
There is a /DumbJuice/programs/<program_name>_debug shortcut that leaves a command line open for debugging if needed
Pypi instructions
pip install setuptools wheel (first time)
Remove previous dist and update version number in setup.py
Build
python setup.py sdist bdist_wheel
Upload to pypi
pip install twine (first time)
twine upload dist/*
enter username token and api token as password.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dumbjuice-0.6.2.tar.gz.
File metadata
- Download URL: dumbjuice-0.6.2.tar.gz
- Upload date:
- Size: 364.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
077cea89d52300fe8760491318e3f12010c7adb8b6e150b272ee565c11d2510c
|
|
| MD5 |
870dd131edcb3432504bc8c76daefb8b
|
|
| BLAKE2b-256 |
ac451dfb1b9eee989c9a92132593a979226cd0186df35b2ebf5f0d7af078d184
|
File details
Details for the file dumbjuice-0.6.2-py3-none-any.whl.
File metadata
- Download URL: dumbjuice-0.6.2-py3-none-any.whl
- Upload date:
- Size: 716.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
30ef8ab23b3243eaf701f9a3fe27f2d4a4632534f4d98cbe1f092916b94ea952
|
|
| MD5 |
2595d3f8b08a3a6c069d239ec593ac23
|
|
| BLAKE2b-256 |
1e481ac8ae842c943049ff15d3e5a109e7826209d4ccbf440cc98e7eef109ce6
|