{"id":17868079,"url":"https://github.com/sayyid5416/pyinstaller","last_synced_at":"2025-04-06T18:14:21.472Z","repository":{"id":63734555,"uuid":"569858527","full_name":"sayyid5416/pyinstaller","owner":"sayyid5416","description":"Customisable GitHub Action to package python scripts into executables for different OS's","archived":false,"fork":false,"pushed_at":"2024-11-30T05:55:50.000Z","size":69,"stargazers_count":52,"open_issues_count":1,"forks_count":30,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-30T17:11:15.821Z","etag":null,"topics":["github-actions","linux","mac","pyinstaller","python","windows"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sayyid5416.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-23T19:22:42.000Z","updated_at":"2025-03-16T23:13:14.000Z","dependencies_parsed_at":"2024-01-28T06:23:31.982Z","dependency_job_id":"9144166d-7efe-484b-95ff-2d037421eb2a","html_url":"https://github.com/sayyid5416/pyinstaller","commit_stats":{"total_commits":62,"total_committers":5,"mean_commits":12.4,"dds":0.08064516129032262,"last_synced_commit":"a93132e946d760969e74aacb8a89e3d6e438b2be"},"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sayyid5416%2Fpyinstaller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sayyid5416%2Fpyinstaller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sayyid5416%2Fpyinstaller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sayyid5416%2Fpyinstaller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sayyid5416","download_url":"https://codeload.github.com/sayyid5416/pyinstaller/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247526762,"owners_count":20953143,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github-actions","linux","mac","pyinstaller","python","windows"],"created_at":"2024-10-28T09:56:49.994Z","updated_at":"2025-04-06T18:14:21.452Z","avatar_url":"https://github.com/sayyid5416.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Check all available usable tags [here](../../tags)\n\u003cbr\u003e\nYou can also use any major tags like `@v1` for any `@v1.*.*`\n\n\n\u003cbr\u003e\n\n\n# 🔰 PyInstaller\n  - This action packages the python source code into executables using [pyinstaller](https://pyinstaller.org).\n  - Use this action in your workflow to **create** \u0026 **upload** executables to GitHub _(as artifacts)_.\n  - Use [inputs](#-inputs--outputs) to configure this action.\n  - Use [outputs](#-inputs--outputs) to get information from this action.\n\n\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n\n# 🔰 Features\n### 💠 Multi-OS support\n  - Create executable for different kinds of os like linux, windows, mac etc.\n  - Specify OS in `jobs.\u003cjob-id\u003e.runs-on=\u003cyour-os-name\u003e` in your workflow file.\n  - see [examples](#-examples) for more info.\n\n### 💠 .py and .spec support\n  - You can use either `.py` or `.spec` file to create the executable.\n  - Specify it in `inputs.spec: \u003cfile.py/file.spec\u003e`.\n  - When `.py` file is used, generated `.spec` file will also be uploaded as artifact.\n  - Modify your `.spec` file according to your needs.\n\n### 💠 Third party modules\n  - Write your third party modules in a file _(Ex: `requirements.txt`)_ , and\n  - Use `inputs.requirements: \u003cpath-to-your-requirement-file\u003e`.\n\n### 💠 Pyinstaller options\n  - Specify pyinstaller options in `inputs.options: \u003ccomma-seperated-options-here\u003e`.\n  - `.py` and `.spec` both supports different kind of options.\n  - Check list of all [supported options here](#-supported-pyinstaller-options).\n\n### 💠 Python and Pyinstaller versions\n  - You can specify any python version for the executable.\n  - Specify specific python-version in `inputs.python_ver: \u003cpython-version-here\u003e`.\n  - Specify specific pyinstaller-version in `inputs.pyinstaller_ver: \u003cpyinstaller-version-here-with-proper-signs, like '==5.13.2'\u003e`.\n\n### 💠 Executable uploads\n  - You can control if generated executable needs to be uploaded as artifact.\n  - You can choose a name of your liking.\n  - You can also customise the level of compression for the archive.\n  - Specify the artifact name in `inputs.upload_exe_with_name: \u003cname-here\u003e`.\n\n\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n\n# 🔰 Inputs \u0026 Outputs\n  - Some **inputs** are **required**, while rest are optional. \n  - Check detailed info about these inputs \u0026 outputs [here](/action.yml).\n\n### 💠 Available Inputs\n  | Input                 | Default \u003cbr\u003e _(`-` = empty string)_  | Description \n  |-----------------------|:--------:|-------------\n  | `spec`  _(required)_  | -        | Path of your `.py` or `.spec` file\n  | `requirements`        | -        | Path of your `requirements.txt` file\n  | `options`             | -        | [Options](#-supported-pyinstaller-options) to set for pyinstaller command\n  | `spec_options`        | -        | [Custom parameters for the spec file](https://pyinstaller.org/en/v6.0.0/spec-files.html#adding-parameters-to-spec-files)\n  | `python_ver`          | 3.10     | Specific python version you want to use\n  | `python_arch`         | x64      | Specific python architecture you want to use\n  | `pyinstaller_ver`     | -        | Specific pyinstaller version you want to use \u003cbr\u003e*(with proper signs, like `==5.13.2`)*\n  | `exe_path`            | ./dist   | Path on runner-os, where executable will be stored\n  | `upload_exe_with_name`| -        | Upload exe_ artifact with this name. Else, it won't upload\n  | `clean_checkout`      | true     | If true, perform a clean checkout; if false, skip cleaning. Cleaning will remove all existing local files not in the repository during checkout. If you use utilities like pyinstaller-versionfile, set this to false.\n  | `lfs`                 | false    | Whether to download Git-LFS files (passed to `lfs` option in actions/checkout step)\n  | `compression_level`   | 6        | Level of compression for archive. \u003cbr\u003eRange: 0 and 9. \u003cbr\u003e_(0 = No compression, 9 = Max compression)_.\n\n\u003cbr\u003e\n\n### 💠 Available Outputs\n  | Output                | Description \n  |-----------------------|-------------\n  | `executable_path`     | Path on runner-os, where executable will be stored\n  | `is_uploaded`         | `true`, if packaged executable has been uploaded as artifact\n\n\u003cbr\u003e\n\n### 💠 Supported [Pyinstaller options](https://pyinstaller.org/en/stable/usage.html#options)\n | For `.py`                               | For `.py`                               | For `.spec`\n |-----------------------------------------|-----------------------------------------|------------\n | `--uac-admin`                           | `--name \u003cNAME\u003e`,        `-n \u003cNAME\u003e`     | `--ascii`,  `-a`\n | `--uac-uiaccess`                        | `--icon \u003cFILEICON\u003e`,    `-i \u003cFILEICON\u003e` | `--upx-dir \u003cUPX_DIR\u003e`\n | `--noupx`                               | `--key \u003cKEY\u003e`                           | \n | `--onedir`,                        `-D` | `--upx-dir \u003cUPX_DIR\u003e`                   |\n | `--onefile`,                       `-F` | `--upx-exclude \u003cFILE\u003e`                  |\n | `--ascii`,                         `-a` | `--add-data \u003cSRC;DEST or SRC:DEST\u003e`     |\n | `--console`,    `--nowindowed`,    `-c` | `--add-binary \u003cSRC;DEST or SRC:DEST\u003e`   |\n | `--windowed`,   `--noconsole`,     `-w` | `--collect-data \u003cMODULENAME\u003e`           |\n |                                         | `--collect-all \u003cMODULENAME\u003e`            |\n |                                         | `--version-file \u003cFILE\u003e`                 |\n\n\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n\n# 🔰 Examples\n\n```yaml\njobs:\n  pyinstaller-build:\n    runs-on: #\u003cwindows-latest / ubuntu-latest / ..... etc\u003e\n    steps:\n      - name: Create Executable\n        uses: sayyid5416/pyinstaller@v1\n        with:\n          python_ver: '3.6'\n          pyinstaller_ver: '==5.13.2'\n          spec: 'src/build.spec'\n          requirements: 'src/requirements.txt'\n          upload_exe_with_name: 'My executable'\n          options: --onefile, --name \"My App\", --windowed\n          spec_options: # any custom arguments you want like: `--debug`\n```\n\n\n\u003cbr\u003e\n\u003cbr\u003e\n\u003cbr\u003e\n\n\n# 🔰 Main Repository : [sayyid5416/pyinstaller](https://github.com/sayyid5416/pyinstaller)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsayyid5416%2Fpyinstaller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsayyid5416%2Fpyinstaller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsayyid5416%2Fpyinstaller/lists"}