effectual
/ɪˈfek.tʃu.əl/ meaning effective and successful
Why?
Sometimes you want a single portable python file without having to make a platform specific executable or a dependency-less .pyz! Basically me trying to make Vite for python (badly) :(
When not to use this
- The python package requires access to specific files like CustomTkinter and Pillow
- Incredibly version specific code, for example something that won't run on a slightly different python version or operating system
- The output bundle needs to include packages that aren't mostly written in python
Setup
Template
If you want a simple minimal setup process then just use the effectual-template
DIY
First make sure you have uv installed and updated:
uv self update
Furthermore if you haven't already created a project run:
uv init
Then to install effectual run:
uv add effectual --dev
Finally add the following lines to your pyproject.toml and configure to your heart's desire
[tool.effectual]
sourceDirectory = "./src/"
outputDirectory = "./dist/"
outputFileName = "bundle.pyz"
minification = true
compressionLevel = 5
Note you must have a __main__.py entrypoint for this to work
Bundling
Development
To bundle in dev mode use:
uv run efec dev
This is like what esBuild does for vite
Production
To build a distributable .pyz file run:
uv run efec dist
This is like what what Rollup does for vite
To be added
- Treeshaking
- Rewriting some time critical parts in Rust 🚀🦀
- Cross platform compatibility (multiple output bundles)
- Bundling python version shebang and bytecode compilation
- Plugin and loader system (like rollup and webpack)
Contributions
All contributions are welcome, I'm not the best in the world at project management but if you think you can add a feature or improve anything please send over a pull request!
Building the project from source
Requirements
To build the project from source you need two tools:
Process
-
CD to your effectual directory and run:
task setup -
Then to build a distributable tar.gz and wheel:
task build
Metadata
Release files for effectual 0.8.11
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| effectual-0.8.11.tar.gz | 129.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| effectual-0.8.11-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 139.0 kB
Release files / effectual-0.8.11.tar.gz
| Download URL | effectual-0.8.11.tar.gz |
|---|---|
| Size | 129.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
01755514b64f2d28075c6baf3c7fd7123606c54dc82cbc48e8770d2c9fa0f87c
|
|
BLAKE2b-256 checksum How to use checksums |
e3106db1a53ba6247374ebcbb6e35c2701c1f6103e02cd438c3acb711b4a59db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Hatch/1.18.1 {"ci":null,"cpu":"AMD64","implementation":{"name":"CPython","version":"3.11.10"},"installer":{"name":"hatch","version":"1.18.1"},"openssl_version":"OpenSSL 3.0.15 3 Sep 2024","python":"3.11.10","system":{"name":"Windows","release":"10"}} HTTPX2/2.13.1
|
Release files / effectual-0.8.11-py3-none-any.whl
| Download URL | effectual-0.8.11-py3-none-any.whl |
|---|---|
| Size | 9.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8e3c08395e30dc03f3e808d3965d7de3e99530677f317279c90bcfd2e60cbc31
|
|
BLAKE2b-256 checksum How to use checksums |
b5ed62ca20a8ef879c3da6f520b0cf284b1e4dab73162ec03f300cd1520e775e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Hatch/1.18.1 {"ci":null,"cpu":"AMD64","implementation":{"name":"CPython","version":"3.11.10"},"installer":{"name":"hatch","version":"1.18.1"},"openssl_version":"OpenSSL 3.0.15 3 Sep 2024","python":"3.11.10","system":{"name":"Windows","release":"10"}} HTTPX2/2.13.1
|