{"id":26232548,"url":"https://github.com/bulletmark/pipxx","last_synced_at":"2025-08-06T15:32:29.882Z","repository":{"id":193148771,"uuid":"687812014","full_name":"bulletmark/pipxx","owner":"bulletmark","description":"Wrapper for pipx to add some minor functionality","archived":false,"fork":false,"pushed_at":"2025-07-10T03:29:53.000Z","size":44,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-10T08:19:14.284Z","etag":null,"topics":["pip","pipx"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bulletmark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2023-09-06T03:56:48.000Z","updated_at":"2025-06-15T05:50:20.000Z","dependencies_parsed_at":"2024-03-29T06:29:37.968Z","dependency_job_id":"3fdf0ec0-6b94-439e-9fca-601b9a9181e8","html_url":"https://github.com/bulletmark/pipxx","commit_stats":null,"previous_names":["bulletmark/pipxx"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/bulletmark/pipxx","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bulletmark%2Fpipxx","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bulletmark%2Fpipxx/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bulletmark%2Fpipxx/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bulletmark%2Fpipxx/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bulletmark","download_url":"https://codeload.github.com/bulletmark/pipxx/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bulletmark%2Fpipxx/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269104177,"owners_count":24360472,"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","status":"online","status_checked_at":"2025-08-06T02:00:09.910Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["pip","pipx"],"created_at":"2025-03-13T00:37:28.206Z","updated_at":"2025-08-06T15:32:29.874Z","avatar_url":"https://github.com/bulletmark.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## PIPXX - Wrapper for pipx to add some minor functionality\n[![PyPi](https://img.shields.io/pypi/v/pipxx)](https://pypi.org/project/pipxx/)\n\n_**Note: This project has been superceded by my\n[pipxu](https://github.com/bulletmark/pipxu) project which is a new\nimplementation of [`pipx`][pipx] that uses\n[uv](https://github.com/astral-sh/uv).**_\n\n[`pipxx`][pipxx] is a simple command line utility to wrap the usage of\n[`pipx`][pipx] to provide some minor improved functions. Consider\n[`pipxx`][pipxx] a proof of concept of some ideas for [`pipx`][pipx].\n\n1. [Global application installation by\n   root](#enhancement-1-global-application-installation-by-root).\n2. [Enhancement of pipx list\n   output](#enhancement-2-improved-pipx-list-output).\n3. [Automatic determination of pyenv Python path for\n   install](#enhancement-3-automatic-determination-of-pyenv-python-path-for-install).\n4. [Substitution of current directory with package name for\n   uninstall](#enhancement-4-substitution-of-current-directory-with-package-name-for-uninstall).\n\nSee the description of these enhancements below.\n\n`pipxx` is merely a wrapper for `pipx` so takes exactly the same command\nline arguments and options. Just run `pipxx` the same as you would run\n`pipx`. Type `pipx` or `pipx -h` to view the usage summary for `pipx`\n(or type `pipxx` or `pipxx -h` to see the same usage summary).\n\nThe latest version and documentation is available at\nhttps://github.com/bulletmark/pipxx.\n\n### Enhancement 1: Global application installation by root\n\n`pipx` is used normally to install applications for a single user. It\ncan also [install applications\nglobally](https://pipx.pypa.io/stable/installation/#installation-options)\nas root but that is [awkward](https://github.com/pypa/pipx/issues/754)\nbecause you have to manually set environment variables. `pipxx`\nrecognises when it is run as root (or with `sudo`) and automatically\nsets appropriate system global `PIPX_BIN_DIR`, `PIPX_MAN_DIR`, and\n`PIPX_HOME` directories for `pipx`.\n\nE.g. to install application as normal user:\n\n```bash\n$ pipxx install cowsay\n```\n\nTo install application for all users (i.e. globally):\n\n```bash\n$ sudo pipxx install cowsay\n```\n\nNote, to see the global directories selected by `pipxx` for your system:\n\n```bash\n$ sudo pipxx environment\n   ```\n\n### Enhancement 2: Improved pipx list output\n\n[`pipx list`](https://pipx.pypa.io/stable/docs/#pipx-list)\noutput lacks some useful information. `pipxx` adds the following\nto the `pipx list` output:\n\n1. The PyPi package name, or source directory, or VCS URL from where the\n   application was installed from,\n2. Whether the application is installed as\n   [__editable__](https://pipx.pypa.io/stable/docs/#pipx-install).\n\n### Enhancement 3: Automatic determination of pyenv Python path for install\n\nWhen installing, you can tell `pipx` to use a specific version/path of\nPython using the `--python` option. Unfortunately, you have to specify\nthe full path to the python interpreter you want. Very commonly,\n[`pyenv`](https://github.com/pyenv/pyenv) is used to install multiple\nversions of Python.\n\nSo to use a specific pyenv Python version with `pipx` you have to type:\n\n```sh\n$ pipx install --python ~/.pyenv/versions/3.12.0/bin/python cowsay\n```\n\nWith `pipxx` you merely have to type:\n\n```sh\n$ pipxx install --python 3.12 cowsay\n```\n\nI.e. `pipxx` will work out from `3.12` that you want the path\n`~/.pyenv/versions/3.12.0/bin/python`, i.e. the latest `3.12` version\ninstalled at the time of this example. You could alternately type `pipxx\ninstall --python 3 cowsay`, or `pipxx install --python 3.12.0 cowsay`.\n\nNote the automatically selected path is dependent on your\nsystem/installation and is derived by `pipxx` from the output of `pyenv\nroot`.\n\nActually, `--python` is a commonly used option but unfortunately `pipx`\ndoes not provide a short-form option for it. So `pipxx` also adds `-P`\nas an alias for `--python` allowing you to simply type:\n\n```sh\n$ pipxx install -P 3.12 cowsay\n```\n\nNote that `pipxx` also adds a description of the added pyenv version\noption and the added `-P` alias option to the `install --help` output.\n\n### Enhancement 4: Substitution of current directory with package name for uninstall\n\nDevelopers often use `pipx` to install and run an application they are\nworking on from a local source directory. E.g. for an example\napplication `myapp`:\n\n```sh\n$ pwd\n/home/myname/src/myapp\n$ pipx install -e .\ninstalled package myapp \u003c...\u003e\n```\n\nTo uninstall this application you have to type `pipx uninstall myapp`.\nHowever, thinking symmetrically, you would expect `pipx uninstall .`\nwould suffice. So `pipxx` adds the ability to do this:\n\n\n```sh\n$ pipxx uninstall .\nuninstalled myapp!\n```\n\n## Installation or upgrade or removal\n\nNote [pipxx is on PyPI](https://pypi.org/project/pipxx/) so just ensure\nthat [`pipx`](https://pipx.pypa.io/stable/) is installed then type the\nfollowing:\n\nTo install:\n\n```bash\n$ pipx install pipxx\n```\n\nTo upgrade:\n\n```bash\n$ pipx upgrade pipxx\n```\n\nTo remove:\n\n```bash\n$ pipx uninstall pipxx\n```\n\n`pipxx` requires Python \u003e= 3.7 and requires no 3rd party packages. It\nrequires that `pipx` is in your `$PATH`.\n\n## License\n\nCopyright (C) 2023 Mark Blakeney. This program is distributed under the\nterms of the GNU General Public License.\nThis program is free software: you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation, either version 3 of the License, or any later\nversion.\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License at \u003chttp://www.gnu.org/licenses/\u003e for more details.\n\n[pipxx]: https://github.com/bulletmark/pipxx\n[pipx]: https://pipx.pypa.io/stable/\n\n\u003c!-- vim: se ai syn=markdown: --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbulletmark%2Fpipxx","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbulletmark%2Fpipxx","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbulletmark%2Fpipxx/lists"}