{"id":18743560,"url":"https://github.com/stephen-ra-king/pynball","last_synced_at":"2025-06-22T00:36:05.210Z","repository":{"id":40239935,"uuid":"464560536","full_name":"Stephen-RA-King/pynball","owner":"Stephen-RA-King","description":"A command line tool to consolidate development with various versions of Python , pyenv and virtualenvwrapper","archived":false,"fork":false,"pushed_at":"2025-06-09T19:47:06.000Z","size":350,"stargazers_count":2,"open_issues_count":3,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-09T20:32:55.409Z","etag":null,"topics":["python-environment","python-version-management","python-version-manager","python-version-selector","python-versions","version-check","virtualenv-manager"],"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/Stephen-RA-King.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-02-28T16:32:46.000Z","updated_at":"2025-02-21T15:54:48.000Z","dependencies_parsed_at":"2023-02-16T15:01:03.845Z","dependency_job_id":"37cdfbca-5f53-46fb-8a67-fc39faa89458","html_url":"https://github.com/Stephen-RA-King/pynball","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/Stephen-RA-King/pynball","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stephen-RA-King%2Fpynball","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stephen-RA-King%2Fpynball/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stephen-RA-King%2Fpynball/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stephen-RA-King%2Fpynball/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Stephen-RA-King","download_url":"https://codeload.github.com/Stephen-RA-King/pynball/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Stephen-RA-King%2Fpynball/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261217292,"owners_count":23126246,"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":["python-environment","python-version-management","python-version-manager","python-version-selector","python-versions","version-check","virtualenv-manager"],"created_at":"2024-11-07T16:11:48.668Z","updated_at":"2025-06-22T00:36:00.196Z","avatar_url":"https://github.com/Stephen-RA-King.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pynball\n\n_**Centralized management and utilization of all your Python versions, installations and virtual environments.**_\n\n[![PyPI][pypi-image]][pypi-url]\n[![Downloads][downloads-image]][downloads-url]\n[![Status][status-image]][pypi-url]\n[![Python Version][python-version-image]][pypi-url]\n[![tests][tests-image]][tests-url]\n[![Codecov][codecov-image]][codecov-url]\n[![CodeQl][codeql-image]][codeql-url]\n[![pre-commit.ci status][pre-commit.ci-image]][pre-commit.ci-url]\n[![readthedocs][readthedocs-image]][readthedocs-url]\n[![CodeFactor][codefactor-image]][codefactor-url]\n[![Codeclimate][codeclimate-image]][codeclimate-url]\n[![Imports: isort][isort-image]][isort-url]\n[![Code style: black][black-image]][black-url]\n[![Checked with mypy][mypy-image]][mypy-url]\n[![security: bandit][bandit-image]][bandit-url]\n[![Commitizen friendly][commitizen-image]][commitizen-url]\n[![Conventional Commits][conventional-commits-image]][conventional-commits-url]\n[![DeepSource][deepsource-image]][deepsource-url]\n[![license][license-image]][license-url]\n[![pydough][pydough-image]][pydough-url]\n\u003c!-- [![OpenSSFScorecard][openssf-image]][openssf-url] --\u003e\n\n![](assets/header.png)\n\nYou may have a requirement for development on various versions of Python.\nOr you may have a mixture of installations including pyenv, custom installations,\nsystem installations etc. Pynball can make leveraging such environments a lot easier.\n\n## Features\n\n---\n\n-   Consolidates all Python installations including [**pyenv**][pyenv-url] versions into a single management system.\n-   Easily create Virtual Environments using any Python version.\n-   Track which virtual environments have which Python versions and tox versions.\n-   Quickly change the System interpreter\n\n## Pre Installation Requirements\n\n---\n\n#### Minimum Requirements\n\n1. Python 3.8+\n2. [**pipx**][pipx-url]\n3. [**Virtualenv**][virtualenv-url] (which has benefits over venv)\n4. [**Virtualenvwrapper**][virtualenvwrapper-url]\n\n#### For Maximum Benefits additionally install the following:\n\n1. [**pyenv**][pyenv-url]\n\n## Installation\n\n---\n\n**OS X \u0026 Linux:**\n\nWill be supported in version 2\n\n**Windows:**\n\n```sh\npipx install pynball\n```\n\n## Usage example\n\n---\n\n### View Available commands\n\n```sh\npynball\nUsage: pynball [OPTIONS] COMMAND [ARGS]...\n\n  Utility script to help manage development with various versions of Python in\n  conjunction with Virtual Environments and optionally the pyenv module\n\nOptions:\n  --help  Show this message and exit.\n\nCommands:\n  add         Adds a name / path of an installation of Python.\n  addall      Add all versions to the Pynball configuration.\n  delete      Deletes a name / path of an installation of Python.\n  exportconf  Creates a configuration file backup.\n  importconf  Creates a configuration from a file backup\n  lsproject   Displays all Virtual Environment projects (with versions: native, tox and pyenv)\n  mkproject   Creates a Virtual Environment from a specific Python version.\n  mvproject   Renames a Virtual Environment (optionally updates GitHub and git)\n  pyenv       Automatically include the pyenv versions in Pynball\n  reset       Deletes all names / paths\n  rmproject   Deletes a Virtual Environment.\n  system      Changes the system Python Interpreter version.\n  version     Display details about the system Python Interpreter.\n  versions    Lists the names / paths of the configured Python installations\n```\n\n### Add a Python version to the config\n\n```sh\npynball versions\nD:\\PYTHON\\3.9.10 : --\u003e System Interpreter\nWARNING: Pynball configuration is empty - use 'add' command\n```\n\n```sh\npynball add 3.8.10 D:\\PYTHON\\3.8.10\n'3.8.10' Successfully added to configuration\n```\n\n```sh\npynball versions\nD:\\PYTHON\\3.9.10 : --\u003e System Interpreter\n3.8.10    D:\\PYTHON\\3.8.10\nWARNING: System Interpreter is not in Pynball Configuration\n```\n\n### Add all manually installed Python versions to the config\n\n```sh\npynball addall\n'3.10.4' Successfully added to configuration\n'3.5.4' Successfully added to configuration\n'3.6.8' Successfully added to configuration\n'3.7.9' Successfully added to configuration\nWARNING: '3.8.10' already added to configuration as '3.8.10'\n'3.9.10' Successfully added to configuration\n```\n\n```sh\npynball versions\n3.10.4    D:\\PYTHON\\3.10.4\n3.9.10    D:\\PYTHON\\3.9.10 : --\u003e System Interpreter\n3.8.10    D:\\PYTHON\\3.8.10\n3.7.9     D:\\PYTHON\\3.7.9\n3.6.8     D:\\PYTHON\\3.6.8\n3.5.4     D:\\PYTHON\\3.5.4\n```\n\n### Add pyenv Python versions (if any) to the config\n\n```sh\npynball pyenv -u\n'3.10.2' Successfully added to configuration\n'3.5.2' Successfully added to configuration\n'3.8.0' Successfully added to configuration\n3.10.4    D:\\PYTHON\\3.10.4\n3.10.2    C:\\Users\\conta\\.pyenv\\pyenv-win\\versions\\3.10.2\n3.9.10    D:\\PYTHON\\3.9.10 : --\u003e System Interpreter\n3.8.10    D:\\PYTHON\\3.8.10\n3.8.0     C:\\Users\\conta\\.pyenv\\pyenv-win\\versions\\3.8.0\n3.7.9     D:\\PYTHON\\3.7.9\n3.6.8     D:\\PYTHON\\3.6.8\n3.5.4     D:\\PYTHON\\3.5.4\n3.5.2     C:\\Users\\conta\\.pyenv\\pyenv-win\\versions\\3.5.2\n```\n\n```sh\npynball versions\n3.10.4    D:\\PYTHON\\3.10.4\n3.10.2    C:\\Users\\conta\\.pyenv\\pyenv-win\\versions\\3.10.2\n3.9.10    D:\\PYTHON\\3.9.10 : --\u003e System Interpreter\n3.8.10    D:\\PYTHON\\3.8.10\n3.8.0     C:\\Users\\conta\\.pyenv\\pyenv-win\\versions\\3.8.0\n3.7.9     D:\\PYTHON\\3.7.9\n3.6.8     D:\\PYTHON\\3.6.8\n3.5.4     D:\\PYTHON\\3.5.4\n3.5.2     C:\\Users\\conta\\.pyenv\\pyenv-win\\versions\\3.5.2\n```\n\n### Create a virtual environment using a version in the config\n\n```sh\npynball mkproject 3.8.10 hobgoblin\n```\n\n### List all the virtual environments\n\n```sh\npynball lsproject\nProject Name             Native Version           Pyenv Versions        Tox Versions\n============             ==============           ==============        ============\nhobgoblin                3.8.10                   -                     3.8, 3.9, 3.10\norganizer                3.9.10                   -                     -\npizazz                   3.9.10                   -                     -\ntemplate                 3.9.10                   -                     -\n```\n\n### Change system interpreter\n\n```sh\npynball system 3.6.8\n```\n\n```sh\npynball versions\n3.10.4    D:\\PYTHON\\3.10.2\n3.10.2    C:\\Users\\conta\\.pyenv\\pyenv-win\\versions\\3.10.2\n3.9.10    D:\\PYTHON\\3.9.10\n3.8.10    D:\\PYTHON\\3.8.10\n3.8.0     C:\\Users\\conta\\.pyenv\\pyenv-win\\versions\\3.8.0\n3.7.9     D:\\PYTHON\\3.7.9\n3.6.8     D:\\PYTHON\\3.6.8 : --\u003e System Interpreter\n3.5.4     D:\\PYTHON\\3.5.4\n3.5.2     C:\\Users\\conta\\.pyenv\\pyenv-win\\versions\\3.5.2\n```\n\n_For more information, please refer to the wiki_\n\n## Documentation\n\n---\n\n[**Read the Docs**](https://pynball.readthedocs.io/en/latest/?)\n\n-   [**Credits**](https://pynball.readthedocs.io/en/latest/example.html)\n-   [**Changelog**](https://pynball.readthedocs.io/en/latest/changelog.html)\n-   [**API Reference**](https://pynball.readthedocs.io/en/latest/autoapi/index.html)\n\n[**Wiki**][wiki]\n\n## Meta\n\n---\n\n[![](assets/linkedin.png)](https://www.linkedin.com/in/sr-king)\n[![](assets/github.png)](https://github.com/Stephen-RA-King)\n[![](assets/pypi.png)](https://pypi.org/project/pynball)\n[![](assets/www.png)](https://stephen-ra-king.github.io/justpython/)\n[![](assets/email.png)](mailto:sking.github@gmail.com)\n\nStephen R A King : [sking.github@gmail.com](mailto:sking.github@gmail.com)\n\nDistributed under the MIT license. See [![][license-image]][license-url] for more information.\n\nCreated with Cookiecutter template: [![pydough][pydough-image]][pydough-url] version 1.2.1\n\nDigital object identifier:  [![DOI](https://zenodo.org/badge/464560536.svg)](https://zenodo.org/badge/latestdoi/464560536)\n\n\u003c!-- Markdown link \u0026 img dfn's --\u003e\n\n[bandit-image]: https://img.shields.io/badge/security-bandit-yellow.svg\n[bandit-url]: https://github.com/PyCQA/bandit\n[black-image]: https://img.shields.io/badge/code%20style-black-000000.svg\n[black-url]: https://github.com/psf/black\n[codeclimate-image]: https://api.codeclimate.com/v1/badges/9543c409696e9976a987/maintainability\n[codeclimate-url]: https://codeclimate.com/github/Stephen-RA-King/pynball/maintainability\n[codecov-image]: https://codecov.io/gh/Stephen-RA-King/pynball/branch/main/graph/badge.svg\n[codecov-url]: https://app.codecov.io/gh/Stephen-RA-King/pynball\n[codefactor-image]: https://www.codefactor.io/repository/github/Stephen-RA-King/pynball/badge\n[codefactor-url]: https://www.codefactor.io/repository/github/Stephen-RA-King/pynball\n[codeql-image]: https://github.com/Stephen-RA-King/pynball/actions/workflows/github-code-scanning/codeql/badge.svg\n[codeql-url]: https://github.com/Stephen-RA-King/pynball/actions/workflows/github-code-scanning/codeql\n[commitizen-image]: https://img.shields.io/badge/commitizen-friendly-brightgreen.svg\n[commitizen-url]: http://commitizen.github.io/cz-cli/\n[conventional-commits-image]: https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg?style=flat-square\n[conventional-commits-url]: https://conventionalcommits.org\n[deepsource-image]: https://app.deepsource.com/gh/Stephen-RA-King/pynball.svg/?label=active+issues\u0026show_trend=true\n[deepsource-url]: https://app.deepsource.com/gh/Stephen-RA-King/pynball/?ref=repository-badge\n[downloads-image]: https://static.pepy.tech/personalized-badge/pynball?period=total\u0026units=international_system\u0026left_color=black\u0026right_color=orange\u0026left_text=Downloads\n[downloads-url]: https://pepy.tech/project/pynball\n[format-image]: https://img.shields.io/pypi/format/pynball\n[isort-image]: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat\u0026labelColor=ef8336\n[isort-url]: https://github.com/pycqa/isort/\n[lgtm-alerts-image]: https://img.shields.io/lgtm/alerts/g/Stephen-RA-King/pynball.svg?logo=lgtm\u0026logoWidth=18\n[lgtm-alerts-url]: https://lgtm.com/projects/g/Stephen-RA-King/pynball/alerts/\n[lgtm-quality-image]: https://img.shields.io/lgtm/grade/python/g/Stephen-RA-King/pynball.svg?logo=lgtm\u0026logoWidth=18\n[lgtm-quality-url]: https://lgtm.com/projects/g/Stephen-RA-King/pynball/context:python\n[license-image]: https://img.shields.io/pypi/l/pynball\n[license-url]: https://github.com/Stephen-RA-King/pynball/blob/main/LICENSE\n[mypy-image]: http://www.mypy-lang.org/static/mypy_badge.svg\n[mypy-url]: http://mypy-lang.org/\n[openssf-image]: https://api.securityscorecards.dev/projects/github.com/Stephen-RA-King/pynball/badge\n[openssf-url]: https://api.securityscorecards.dev/projects/github.com/Stephen-RA-King/pynball\n[pip-tools-url]: https://github.com/jazzband/pip-tools/\n[pipx-url]: https://pypa.github.io/pipx/\n[pre-commit-image]: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\u0026logoColor=white\n[pre-commit-url]: https://github.com/pre-commit/pre-commit\n[pre-commit.ci-image]: https://results.pre-commit.ci/badge/github/Stephen-RA-King/pynball/main.svg\n[pre-commit.ci-url]: https://results.pre-commit.ci/latest/github/Stephen-RA-King/pynball/main\n[pydough-image]: https://img.shields.io/badge/pydough-2023-orange\n[pydough-url]: https://github.com/Stephen-RA-King/pydough\n[pyenv-url]: https://github.com/pyenv/pyenv\n[pypi-image]: https://img.shields.io/pypi/v/pynball.svg\n[pypi-url]: https://pypi.org/project/pynball/\n[python-version-image]: https://img.shields.io/pypi/pyversions/pynball\n[readthedocs-image]: https://readthedocs.org/projects/pynball/badge/?version=latest\n[readthedocs-url]: https://pynball.readthedocs.io/en/latest/?badge=latest\n[status-image]: https://img.shields.io/pypi/status/pynball.svg\n[tests-image]: https://github.com/Stephen-RA-King/pynball/actions/workflows/tests.yml/badge.svg\n[tests-url]: https://github.com/Stephen-RA-King/pynball/actions/workflows/tests.yml\n[virtualenv-url]: https://github.com/pypa/virtualenv\n[virtualenvwrapper-url]: https://pypi.org/project/virtualenvwrapper/\n[wiki]: https://github.com/Stephen-RA-King/pynball/wiki\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephen-ra-king%2Fpynball","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstephen-ra-king%2Fpynball","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstephen-ra-king%2Fpynball/lists"}