UEProjectBootstrap
Boostrap an unreal engine project with various tools and scripts, like UEPyScripts and GameDevTools, using Astral UV
Installation 🛠️
This tool is a standalone Python package, run from outside the project you want to bootstrap — it is not added as a submodule anymore.
- Clone this repository.
- Run
setup-env.ps1to install Astral UV and sync the tool's own virtual environment.
Quick Start 🚀
Bootstrap a project by pointing the tool at its .uproject file:
uv run ueprojectbootstrap "C:\Path\To\YourProject\YourProject.uproject"
For a native project (engine + game in the same repository), pass the .uproject file inside the game folder — the tool walks up from it to find the repository root (the folder containing Engine/Build/Build.version) automatically. For a foreign project, the repository root and the game project folder are the same.
The tool will:
- Create
Setup.ps1at the root of the repository. - Create
config.iniinConfig/PyScriptsof the game project folder. - Create
CompileAndRunEditor.ps1andGenerateVSSolution.ps1in the game project folder. - Create
.pre-commit-config.yamlat the root of the repository. - Run any python script found in
Scripts/Python/Bootstrap, usinguv run.
When the script is done, you can now commit all the changes so that all the users have access to the various scripts.
When the project has been bootstrapped, each user can:
- Execute
Setup.ps1(at the root of the repository) to:- Ask whether to apply performance optimizations (Windows Defender and Search indexing exclusions on the repository root). If accepted and the script isn't already running elevated, it relaunches itself with an admin prompt to apply them, then continues. Skipped when
-BuildMachineis passed. - Run
Scripts/UE/Setup.batif the project is native. - Install Astral UV and the required Python version.
- Create the python virtual environment with the python packages UEPyScripts, PyGameDevTools and pypyr
- Install pre-commit and its hooks.
- Call the script
ue-check-engine-installationfor a foreign project.
- Ask whether to apply performance optimizations (Windows Defender and Search indexing exclusions on the repository root). If accepted and the script isn't already running elevated, it relaunches itself with an admin prompt to apply them, then continues. Skipped when
- Execute
CompileAndRunEditor.ps1(in the game project folder) to compile your C++ code and run the editor when done! - Execute
GenerateVSSolution.ps1(in the game project folder) to regenerate the Visual Studio solution. - For native projects,
.pre-commit-config.yamlalso runsue-ugs-pullon thepost-checkoutandpost-mergegit hooks.
Custom bootstrap / setup scripts
You can run custom python scripts at two points:
- When the project is bootstrapped (once, by whoever runs
ueprojectbootstrap): put scripts inScripts/Python/Bootstrap, they are run in alphabetical order withuv run. - Every time a developer runs
Setup.ps1: put scripts inScripts/Python/Setup, they are run in alphabetical order using the project's virtual environment.
Since these scripts run as separate processes, they are given context through environment variables instead of arguments:
UE_BOOTSTRAP_REPOSITORY_ROOT: path to the repository root.UE_BOOTSTRAP_PROJECT_ROOT,UE_BOOTSTRAP_PROJECT_NAME,UE_BOOTSTRAP_UPROJECT_PATH,UE_BOOTSTRAP_IS_FOREIGN_PROJECT(1/0): only set byueprojectbootstrapitself, i.e. forScripts/Python/Bootstrapscripts.UE_BOOTSTRAP_ENGINE_VERSION: the engine'sMajor.Minorversion (e.g.5.8), read fromEngine/Build/Build.version. Set for bothBootstrapandSetupscripts whenever that file can be found.
See Examples for sample scripts.
Developing this tool
The tool's source lives in src/ueprojectbootstrap. Each bootstrap step is its own class in src/ueprojectbootstrap/steps, implementing the abstract Step class (an execute() method and an order property); the CLI discovers and runs them in order automatically. Run setup-env.ps1 to set up a dev environment with uv.
Metadata
Release files for UEProjectBootStrap 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ueprojectbootstrap-1.0.0.tar.gz | 13.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ueprojectbootstrap-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.7 kB
Release files / ueprojectbootstrap-1.0.0.tar.gz
| Download URL | ueprojectbootstrap-1.0.0.tar.gz |
|---|---|
| Size | 13.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e4cbac1802092c81d8afa18b6cbfb5aa8573cf938f56eee53d0622f68c4ef21f
|
|
BLAKE2b-256 checksum How to use checksums |
0bc5a334e9e4574baf7a86ee8f90822a4599505f741b9be774f42e05f7a07e68
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency logRelease files / ueprojectbootstrap-1.0.0-py3-none-any.whl
| Download URL | ueprojectbootstrap-1.0.0-py3-none-any.whl |
|---|---|
| Size | 4.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
751b769275a982a20e34523b5d98b64f7b228e654fcfd4ee9de76dae832aa7c6
|
|
BLAKE2b-256 checksum How to use checksums |
97b8a01cdde8cfb279d298373b2b2de2bd334ee742d200429eabfa3306423a47
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.
Transparency log