pipxu


Namepipxu JSON
Version 1.17 PyPI version JSON
download
home_pageNone
SummaryInstall and Run Python Applications in Isolated Environments using UV
upload_time2024-05-08 02:33:32
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseGPLv3
keywords pipx pip uv venv virtualenv
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            ## PIPXU - Install and Run Python Applications in Isolated Environments using UV
[![PyPi](https://img.shields.io/pypi/v/pipxu)](https://pypi.org/project/pipxu/)
[![AUR](https://img.shields.io/aur/version/pipxu)](https://aur.archlinux.org/packages/pipxu/)

[`pipxu`][pipxu] installs Python applications, i.e. Python packages
which have one or more executable programs, into independent isolated
virtual environments on your system. Each package and it's dependencies
are thus insulated from all other applications, and from the system
Python. [`pipxu`][pipxu] creates links to application executables in a
common directory, which you have in your [PATH][path]. Packages are
typically sourced from [PyPI][pypi], the Python Package Index.

[`pipxu`][pipxu] is a re-implementation of most of the functionality of
the popular [`pipx`][pipx] tool but is **much faster** because it uses
[`uv`][uv] to create and install application virtual environments
instead of [`venv`][venv] and [`pip`][pip] as used by [`pipx`][pipx].
The [`pipxu`][pipxu] code has been developed completely independently of
[`pipx`][pipx] and is not a fork. For compatibility and ease of
migration, the provided commands have the same names as [`pipx`][pipx].
Most commands are implemented, at least for common use cases, although
some command functionality, options, and output are slightly different.

This utility has been developed and tested on Linux but will likely also
work on macOS. It has been briefly tested and seems to run ok on
Windows. The latest documentation and code is available at
https://github.com/bulletmark/pipxu.

## Usage

Type `pipxu` or `pipxu -h` to view the usage summary:

```
usage: pipxu [-h] [--uv uv_path] [-m] [--home HOME] [--bin-dir BIN_DIR]
                   [--man-dir MAN_DIR] [--default-python DEFAULT_PYTHON] [-V]
                   {debug,inject,install,list,reinstall,runpip,uninject,uninstall,upgrade,version}
                   ...

Install Python applications into isolated virtual environments and create
links to the executables in a bin directory for your PATH. Like pipx but uses
uv instead of venv + pip.

options:
  -h, --help            show this help message and exit
  --uv uv_path          path to uv executable, default="uv"
  -m, --no-man-pages    do not install package man pages
  --home HOME           specify PIPXU_HOME
  --bin-dir BIN_DIR     specify PIPXU_BIN_DIR
  --man-dir MAN_DIR     specify PIPXU_MAN_DIR
  --default-python DEFAULT_PYTHON
                        path to default python executable, default="python3"
  -V, --version         just print pipxu version and exit

Commands:
  {debug,inject,install,list,reinstall,runpip,uninject,uninstall,upgrade,version}
    debug               Run an installed application using a debugger.
    inject              Install extra packages into an application.
    install             Install one or more Python applications using isolated
                        virtual environments.
    list                List applications installed by this tool.
    reinstall           Reinstall one, or more, or all applications.
    runpip              Run pip with given arguments on virtual environment
                        for the given application.
    uninject            Uninstall extra packages from an application.
    uninstall           Uninstall one, or more, or all applications.
    upgrade             Upgrade one, or more, or all applications.
    version             List installed application versions.

Note you can set default starting global options in $HOME/.config/pipxu-
flags.conf.
```

Type `pipxu <command> -h` to see specific help/usage for any
individual command:

### Command `debug`

```
usage: pipxu debug [-h] [-e EXECUTABLE] [-d DEBUGGER] package [args ...]

Run an installed application using a debugger.

Tries to work out your preferred debugger from the standard
PYTHONBREAKPOINT environment variable. If not set it defaults to pdb. Or
you can set it explicitly with the -d/--debugger option.

positional arguments:
  package               installed application name
  args                  options and arguments to pass to application, should
                        start with "--"

options:
  -h, --help            show this help message and exit
  -e EXECUTABLE, --executable EXECUTABLE
                        executable to run, default is same as "package" name
  -d DEBUGGER, --debugger DEBUGGER
                        explicit debugger package to use
```

### Command `inject`

```
usage: pipxu inject [-h] [-v] package extras [extras ...]

Install extra packages into an application.

Note the same --index-url is used as/if specified in the original install.

positional arguments:
  package        installed application name
  extras         extra package name[s] to inject/install

options:
  -h, --help     show this help message and exit
  -v, --verbose  give more output
```

### Command `install`

```
usage: pipxu install [-h] [-p PYTHON] [-f] [-e] [-d]
                           [--system-site-packages] [-i INDEX_URL] [-v]
                           package [package ...]

Install one or more Python applications using isolated virtual environments.

positional arguments:
  package               application[s] to install

options:
  -h, --help            show this help message and exit
  -p PYTHON, --python PYTHON
                        specify explicit python executable path
  -f, --force           recreate any already installed venv
  -e, --editable        install application[s] in editable mode
  -d, --include-deps    include executables from dependencies
  --system-site-packages
                        allow venv access to system packages
  -i INDEX_URL, --index-url INDEX_URL
                        base URL of Python Package Index
  -v, --verbose         give more output
```

### Command `list`

```
usage: pipxu list [-h] [--json] [package ...]

List applications installed by this tool.

positional arguments:
  package     list the given application[s] only

options:
  -h, --help  show this help message and exit
  --json      output json instead
```

### Command `reinstall`

```
usage: pipxu reinstall [-h] [-p PYTHON | --reset-python]
                             [--system-site-packages | --no-system-site-packages]
                             [-v] [--all] [--skip]
                             [package ...]

Reinstall one, or more, or all applications.

positional arguments:
  package               application[s] to reinstall (or to skip for --all
                        --skip)

options:
  -h, --help            show this help message and exit
  -p PYTHON, --python PYTHON
                        specify explicit python executable path
  --reset-python        reset any explicit python path to default python
  --system-site-packages
                        allow venv access to system packages, overrides the
                        per-application setting
  --no-system-site-packages
                        remove venv access to system packages, overrides the
                        per-application setting
  -v, --verbose         give more output
  --all                 reinstall ALL applications
  --skip                skip the specified applications when reinstalling all
                        (only can be specified with --all)
```

### Command `runpip`

```
usage: pipxu runpip [-h] package [args ...]

Run pip with given arguments on virtual environment for the given application.

positional arguments:
  package     installed application name
  args        arguments to pass to uv pip, should start with "--".

options:
  -h, --help  show this help message and exit
```

### Command `uninject`

```
usage: pipxu uninject [-h] [-v] package extras [extras ...]

Uninstall extra packages from an application.

positional arguments:
  package        installed application name
  extras         extra package name[s] to uninstall

options:
  -h, --help     show this help message and exit
  -v, --verbose  give more output
```

### Command `uninstall`

```
usage: pipxu uninstall [-h] [-v] [--all] [--skip] [package ...]

Uninstall one, or more, or all applications.

positional arguments:
  package        application[s] to uninstall (or to skip for --all --skip)

options:
  -h, --help     show this help message and exit
  -v, --verbose  give more output
  --all          uninstall ALL applications
  --skip         skip the specified applications when uninstalling all (only
                 can be specified with --all)
```

### Command `upgrade`

```
usage: pipxu upgrade [-h] [-v] [--all] [--skip] [package ...]

Upgrade one, or more, or all applications.

positional arguments:
  package        application[s] to upgrade (or to skip for --all --skip)

options:
  -h, --help     show this help message and exit
  -v, --verbose  give more output
  --all          upgrade ALL applications
  --skip         skip the specified applications when upgrading all (only can
                 be specified with --all)
```

### Command `version`

```
usage: pipxu version [-h] [package]

List installed application versions.

positional arguments:
  package     report specific application and dependent package versions

options:
  -h, --help  show this help message and exit
```

## Installation and Upgrade

Python 3.8 or later is required. Arch Linux users can install [`pipxu`
from the AUR](https://aur.archlinux.org/packages/pipxu) and skip this
section.

The [`uv`][uv] program must be installed (and it's version must be
0.1.33 or later). If [`uv`][uv] is not available via your system
packages, you can install it by following the [uv installation
instructions](https://github.com/astral-sh/uv#getting-started) for your
platform.

E.g. For Linux and macOS:
```sh
curl -LsSf https://astral.sh/uv/install.sh | sh
```

E.g. For Windows:
```sh
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
```

Note [`pipxu` is on PyPI](https://pypi.org/project/pipxu/). With `uv`
installed and on your PATH, run the tiny [bootstrap shell
script](https://github.com/bulletmark/pipxu/blob/main/pipxu-bootstrap)
which installs `pipxu` to a temporary directory then runs `pipxu` from
there to install itself normally:

```sh
$ curl -LsSf https://raw.githubusercontent.com/bulletmark/pipxu/main/pipxu-bootstrap | sh
```

Or install `pipxu` using `pipx` if you prefer (or you are using Windows
where `pipxu-bootstrap` may not work):

```sh
$ pipx install pipxu
$ pipxu install pipxu
$ pipx uninstall pipxu
```

To upgrade:

```sh
$ pipxu upgrade pipxu
```

To uninstall all `pipxu` installed applications, and then uninstall
`pipxu` itself:

```sh
$ pipxu uninstall --all --skip pipxu
$ pipxu uninstall pipxu
```

## Recovery

The `pipxu` package also installs the aforementioned
[`pipxu-bootstrap`](https://github.com/bulletmark/pipxu/blob/main/pipxu-bootstrap)
shell script on your system so you can always recover easily from a
broken `pipxu` installation by manually running that script. E.g. The
following may be needed after a major or incompatible Python version
upgrade where `pipxu` may have stopped working:

```sh
$ pipxu-bootstrap
$ pipxu reinstall --all --skip pipxu
```

If you are on Windows, reinstall `pipxu` using `pipx` as described
in the previous section then `pipxu reinstall --all --skip pipxu`.

## Comparison to pipx

Why would you use [`pipxu`][pipxu] instead of [`pipx`][pipx]? The main
reason is to gain a massive speed improvement. `pipx` uses [`python -m
venv`][venv] to create and install virtual environments and [`pip`][pip]
to install packages whereas `pipxu` uses [`uv`][uv] for these
operations. [`uv`][uv] is [a new project](https://astral.sh/blog/uv)
written in [rust](https://www.rust-lang.org/) which has a better design
than [`venv`][venv] + [`pip`][pip], caches aggressively, and is **much
faster**. Also, `pipx` installs `pip` into each virtual environment
using a shared overlay which it has to update periodically so you
sometimes experience `pipx` seeming to hang for a while while this
update occurs. `pipxu` just creates a minimal lean virtual environment
and uses `uv` for all operations so does not need to do this periodic
update.

Note that `pipx` offers some esoteric options and features which `pipxu`
does not have. `pipxu` caters for the common use cases. `pipxu` never
modifies your PATH.

`pipxu` adds some small but handy features not present in `pipx`:

1. For the commands `uninstall`, `reinstall`, and `upgrade`, `pipx` only
   allows you to specify one application whereas `pipxu` allows you to
   specify one or more applications. To do an operation on **all**
   applications, `pipx`, requires you use a corresponding `*-all`
   command, e.g. to `upgrade` all applications you use `upgrade-all`.
   `pipxu` simply offers a `--all` option on each of those base commands
   to do the same thing, thus avoiding the need for the extra `*-all`
   commands. Also, `pipx` also does not offer `--skip` for all those
   `*-all` commands consistently, whereas `pipxu` does.

2. You can do `pipxu` commands on an editable projects (as often used by
   developers) in the current directory by simply typing "`.`" as the
   package name and this works for all commands. E.g. `pipxu uninstall
   .` or `pipxu inject . pudb`. I.e. `pipxu` automatically determines
   the package name associated with the current directory. Note that
   `pipx` accepts "`.`" for the install command, but not for any others.

3. For Python developers,`pipxu` adds a [`debug`](#command-debug)
   command to conveniently run an installed application using a
   debugger. `pipx` does not have this command. Read more about the
   `debug` command [here](doc/debug.md).

4. If run as root or with `sudo`, `pipxu` installs applications to a
   global location.

## Environment Variables

Type `pipxu` without any arguments to see usage and the current
environment. The environment is printed at the bottom of the screen
output as follows:

E.g. run as my user "mark":

```
Environment:
PIPXU_HOME = /home/mark/.local/share/pipxu
PIPXU_BIN_DIR = /home/mark/.local/bin
PIPXU_MAN_DIR = /home/mark/.local/share/man
PIPXU_DEFAULT_PYTHON = python3

Your PATH contains PIPXU_BIN_DIR (/home/mark/.local/bin).
```

Or run as root, or with [`sudo`](https://www.sudo.ws/):

```
Environment:
PIPXU_HOME = /opt/pipxu
PIPXU_BIN_DIR = /usr/local/bin
PIPXU_MAN_DIR = /usr/local/share/man
PIPXU_DEFAULT_PYTHON = python3

WARNING: Your PATH does not contain PIPXU_BIN_DIR (/usr/local/bin).
```

You can set those environment variables, or provide them as command line
options, to override the defaults if you want. Note, as seen in the
output above, `pipxu` reports if `PIPXU_BIN_DIR` is included or not in
your PATH. To ensure you can run the applications installed by `pipxu`,
that directory **must be in your PATH**. E.g. for most users on Linux
using the default locations, ensure that `~/.local/bin` is [added to
your PATH environment variable][path].

## Command Default Options

You can add default global options to a personal configuration file
`~/.config/pipxu-flags.conf`. If that file exists then each line of
options will be concatenated and automatically prepended to your `pipxu`
command line arguments. Comments in the file (i.e. `#` and anything
after on a line) are ignored. Type `pipxu` to see all supported options.

The global options: `--uv`, `--no-man-pages`, `--home`, `--bin-dir`,
`--man-dir`, `--default-python`, are the only sensible candidates to
consider setting as defaults.

## Command Line Tab Completion

Command line shell [tab
completion](https://en.wikipedia.org/wiki/Command-line_completion) is
automatically enabled on `pipxu` commands and options using
[`argcomplete`](https://github.com/kislyuk/argcomplete). You may need to
first (once-only) [activate argcomplete global
completion](https://github.com/kislyuk/argcomplete#global-completion).

## License

Copyright (C) 2024 Mark Blakeney. This program is distributed under the
terms of the GNU General Public License. This program is free software:
you can redistribute it and/or modify it under the terms of the GNU
General Public License as published by the Free Software Foundation,
either version 3 of the License, or any later version. This program is
distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License at
<http://www.gnu.org/licenses/> for more details.

[pipxu]: https://github.com/bulletmark/pipxu
[pipx]: https://github.com/pypa/pipx
[uv]: https://github.com/astral-sh/uv
[venv]: https://docs.python.org/3/library/venv.html
[pip]: https://pip.pypa.io/en/stable/
[pypi]: https://pypi.org/
[path]: https://www.baeldung.com/linux/path-variable

<!-- vim: se ai syn=markdown: -->

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "pipxu",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "pipx, pip, uv, venv, virtualenv",
    "author": null,
    "author_email": "Mark Blakeney <mark.blakeney@bullet-systems.net>",
    "download_url": "https://files.pythonhosted.org/packages/3b/3f/26fd0f1504e22553ec776490e4ec13f5a6ed808390ff4e840de974966521/pipxu-1.17.tar.gz",
    "platform": null,
    "description": "## PIPXU - Install and Run Python Applications in Isolated Environments using UV\n[![PyPi](https://img.shields.io/pypi/v/pipxu)](https://pypi.org/project/pipxu/)\n[![AUR](https://img.shields.io/aur/version/pipxu)](https://aur.archlinux.org/packages/pipxu/)\n\n[`pipxu`][pipxu] installs Python applications, i.e. Python packages\nwhich have one or more executable programs, into independent isolated\nvirtual environments on your system. Each package and it's dependencies\nare thus insulated from all other applications, and from the system\nPython. [`pipxu`][pipxu] creates links to application executables in a\ncommon directory, which you have in your [PATH][path]. Packages are\ntypically sourced from [PyPI][pypi], the Python Package Index.\n\n[`pipxu`][pipxu] is a re-implementation of most of the functionality of\nthe popular [`pipx`][pipx] tool but is **much faster** because it uses\n[`uv`][uv] to create and install application virtual environments\ninstead of [`venv`][venv] and [`pip`][pip] as used by [`pipx`][pipx].\nThe [`pipxu`][pipxu] code has been developed completely independently of\n[`pipx`][pipx] and is not a fork. For compatibility and ease of\nmigration, the provided commands have the same names as [`pipx`][pipx].\nMost commands are implemented, at least for common use cases, although\nsome command functionality, options, and output are slightly different.\n\nThis utility has been developed and tested on Linux but will likely also\nwork on macOS. It has been briefly tested and seems to run ok on\nWindows. The latest documentation and code is available at\nhttps://github.com/bulletmark/pipxu.\n\n## Usage\n\nType `pipxu` or `pipxu -h` to view the usage summary:\n\n```\nusage: pipxu [-h] [--uv uv_path] [-m] [--home HOME] [--bin-dir BIN_DIR]\n                   [--man-dir MAN_DIR] [--default-python DEFAULT_PYTHON] [-V]\n                   {debug,inject,install,list,reinstall,runpip,uninject,uninstall,upgrade,version}\n                   ...\n\nInstall Python applications into isolated virtual environments and create\nlinks to the executables in a bin directory for your PATH. Like pipx but uses\nuv instead of venv + pip.\n\noptions:\n  -h, --help            show this help message and exit\n  --uv uv_path          path to uv executable, default=\"uv\"\n  -m, --no-man-pages    do not install package man pages\n  --home HOME           specify PIPXU_HOME\n  --bin-dir BIN_DIR     specify PIPXU_BIN_DIR\n  --man-dir MAN_DIR     specify PIPXU_MAN_DIR\n  --default-python DEFAULT_PYTHON\n                        path to default python executable, default=\"python3\"\n  -V, --version         just print pipxu version and exit\n\nCommands:\n  {debug,inject,install,list,reinstall,runpip,uninject,uninstall,upgrade,version}\n    debug               Run an installed application using a debugger.\n    inject              Install extra packages into an application.\n    install             Install one or more Python applications using isolated\n                        virtual environments.\n    list                List applications installed by this tool.\n    reinstall           Reinstall one, or more, or all applications.\n    runpip              Run pip with given arguments on virtual environment\n                        for the given application.\n    uninject            Uninstall extra packages from an application.\n    uninstall           Uninstall one, or more, or all applications.\n    upgrade             Upgrade one, or more, or all applications.\n    version             List installed application versions.\n\nNote you can set default starting global options in $HOME/.config/pipxu-\nflags.conf.\n```\n\nType `pipxu <command> -h` to see specific help/usage for any\nindividual command:\n\n### Command `debug`\n\n```\nusage: pipxu debug [-h] [-e EXECUTABLE] [-d DEBUGGER] package [args ...]\n\nRun an installed application using a debugger.\n\nTries to work out your preferred debugger from the standard\nPYTHONBREAKPOINT environment variable. If not set it defaults to pdb. Or\nyou can set it explicitly with the -d/--debugger option.\n\npositional arguments:\n  package               installed application name\n  args                  options and arguments to pass to application, should\n                        start with \"--\"\n\noptions:\n  -h, --help            show this help message and exit\n  -e EXECUTABLE, --executable EXECUTABLE\n                        executable to run, default is same as \"package\" name\n  -d DEBUGGER, --debugger DEBUGGER\n                        explicit debugger package to use\n```\n\n### Command `inject`\n\n```\nusage: pipxu inject [-h] [-v] package extras [extras ...]\n\nInstall extra packages into an application.\n\nNote the same --index-url is used as/if specified in the original install.\n\npositional arguments:\n  package        installed application name\n  extras         extra package name[s] to inject/install\n\noptions:\n  -h, --help     show this help message and exit\n  -v, --verbose  give more output\n```\n\n### Command `install`\n\n```\nusage: pipxu install [-h] [-p PYTHON] [-f] [-e] [-d]\n                           [--system-site-packages] [-i INDEX_URL] [-v]\n                           package [package ...]\n\nInstall one or more Python applications using isolated virtual environments.\n\npositional arguments:\n  package               application[s] to install\n\noptions:\n  -h, --help            show this help message and exit\n  -p PYTHON, --python PYTHON\n                        specify explicit python executable path\n  -f, --force           recreate any already installed venv\n  -e, --editable        install application[s] in editable mode\n  -d, --include-deps    include executables from dependencies\n  --system-site-packages\n                        allow venv access to system packages\n  -i INDEX_URL, --index-url INDEX_URL\n                        base URL of Python Package Index\n  -v, --verbose         give more output\n```\n\n### Command `list`\n\n```\nusage: pipxu list [-h] [--json] [package ...]\n\nList applications installed by this tool.\n\npositional arguments:\n  package     list the given application[s] only\n\noptions:\n  -h, --help  show this help message and exit\n  --json      output json instead\n```\n\n### Command `reinstall`\n\n```\nusage: pipxu reinstall [-h] [-p PYTHON | --reset-python]\n                             [--system-site-packages | --no-system-site-packages]\n                             [-v] [--all] [--skip]\n                             [package ...]\n\nReinstall one, or more, or all applications.\n\npositional arguments:\n  package               application[s] to reinstall (or to skip for --all\n                        --skip)\n\noptions:\n  -h, --help            show this help message and exit\n  -p PYTHON, --python PYTHON\n                        specify explicit python executable path\n  --reset-python        reset any explicit python path to default python\n  --system-site-packages\n                        allow venv access to system packages, overrides the\n                        per-application setting\n  --no-system-site-packages\n                        remove venv access to system packages, overrides the\n                        per-application setting\n  -v, --verbose         give more output\n  --all                 reinstall ALL applications\n  --skip                skip the specified applications when reinstalling all\n                        (only can be specified with --all)\n```\n\n### Command `runpip`\n\n```\nusage: pipxu runpip [-h] package [args ...]\n\nRun pip with given arguments on virtual environment for the given application.\n\npositional arguments:\n  package     installed application name\n  args        arguments to pass to uv pip, should start with \"--\".\n\noptions:\n  -h, --help  show this help message and exit\n```\n\n### Command `uninject`\n\n```\nusage: pipxu uninject [-h] [-v] package extras [extras ...]\n\nUninstall extra packages from an application.\n\npositional arguments:\n  package        installed application name\n  extras         extra package name[s] to uninstall\n\noptions:\n  -h, --help     show this help message and exit\n  -v, --verbose  give more output\n```\n\n### Command `uninstall`\n\n```\nusage: pipxu uninstall [-h] [-v] [--all] [--skip] [package ...]\n\nUninstall one, or more, or all applications.\n\npositional arguments:\n  package        application[s] to uninstall (or to skip for --all --skip)\n\noptions:\n  -h, --help     show this help message and exit\n  -v, --verbose  give more output\n  --all          uninstall ALL applications\n  --skip         skip the specified applications when uninstalling all (only\n                 can be specified with --all)\n```\n\n### Command `upgrade`\n\n```\nusage: pipxu upgrade [-h] [-v] [--all] [--skip] [package ...]\n\nUpgrade one, or more, or all applications.\n\npositional arguments:\n  package        application[s] to upgrade (or to skip for --all --skip)\n\noptions:\n  -h, --help     show this help message and exit\n  -v, --verbose  give more output\n  --all          upgrade ALL applications\n  --skip         skip the specified applications when upgrading all (only can\n                 be specified with --all)\n```\n\n### Command `version`\n\n```\nusage: pipxu version [-h] [package]\n\nList installed application versions.\n\npositional arguments:\n  package     report specific application and dependent package versions\n\noptions:\n  -h, --help  show this help message and exit\n```\n\n## Installation and Upgrade\n\nPython 3.8 or later is required. Arch Linux users can install [`pipxu`\nfrom the AUR](https://aur.archlinux.org/packages/pipxu) and skip this\nsection.\n\nThe [`uv`][uv] program must be installed (and it's version must be\n0.1.33 or later). If [`uv`][uv] is not available via your system\npackages, you can install it by following the [uv installation\ninstructions](https://github.com/astral-sh/uv#getting-started) for your\nplatform.\n\nE.g. For Linux and macOS:\n```sh\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n```\n\nE.g. For Windows:\n```sh\npowershell -c \"irm https://astral.sh/uv/install.ps1 | iex\"\n```\n\nNote [`pipxu` is on PyPI](https://pypi.org/project/pipxu/). With `uv`\ninstalled and on your PATH, run the tiny [bootstrap shell\nscript](https://github.com/bulletmark/pipxu/blob/main/pipxu-bootstrap)\nwhich installs `pipxu` to a temporary directory then runs `pipxu` from\nthere to install itself normally:\n\n```sh\n$ curl -LsSf https://raw.githubusercontent.com/bulletmark/pipxu/main/pipxu-bootstrap | sh\n```\n\nOr install `pipxu` using `pipx` if you prefer (or you are using Windows\nwhere `pipxu-bootstrap` may not work):\n\n```sh\n$ pipx install pipxu\n$ pipxu install pipxu\n$ pipx uninstall pipxu\n```\n\nTo upgrade:\n\n```sh\n$ pipxu upgrade pipxu\n```\n\nTo uninstall all `pipxu` installed applications, and then uninstall\n`pipxu` itself:\n\n```sh\n$ pipxu uninstall --all --skip pipxu\n$ pipxu uninstall pipxu\n```\n\n## Recovery\n\nThe `pipxu` package also installs the aforementioned\n[`pipxu-bootstrap`](https://github.com/bulletmark/pipxu/blob/main/pipxu-bootstrap)\nshell script on your system so you can always recover easily from a\nbroken `pipxu` installation by manually running that script. E.g. The\nfollowing may be needed after a major or incompatible Python version\nupgrade where `pipxu` may have stopped working:\n\n```sh\n$ pipxu-bootstrap\n$ pipxu reinstall --all --skip pipxu\n```\n\nIf you are on Windows, reinstall `pipxu` using `pipx` as described\nin the previous section then `pipxu reinstall --all --skip pipxu`.\n\n## Comparison to pipx\n\nWhy would you use [`pipxu`][pipxu] instead of [`pipx`][pipx]? The main\nreason is to gain a massive speed improvement. `pipx` uses [`python -m\nvenv`][venv] to create and install virtual environments and [`pip`][pip]\nto install packages whereas `pipxu` uses [`uv`][uv] for these\noperations. [`uv`][uv] is [a new project](https://astral.sh/blog/uv)\nwritten in [rust](https://www.rust-lang.org/) which has a better design\nthan [`venv`][venv] + [`pip`][pip], caches aggressively, and is **much\nfaster**. Also, `pipx` installs `pip` into each virtual environment\nusing a shared overlay which it has to update periodically so you\nsometimes experience `pipx` seeming to hang for a while while this\nupdate occurs. `pipxu` just creates a minimal lean virtual environment\nand uses `uv` for all operations so does not need to do this periodic\nupdate.\n\nNote that `pipx` offers some esoteric options and features which `pipxu`\ndoes not have. `pipxu` caters for the common use cases. `pipxu` never\nmodifies your PATH.\n\n`pipxu` adds some small but handy features not present in `pipx`:\n\n1. For the commands `uninstall`, `reinstall`, and `upgrade`, `pipx` only\n   allows you to specify one application whereas `pipxu` allows you to\n   specify one or more applications. To do an operation on **all**\n   applications, `pipx`, requires you use a corresponding `*-all`\n   command, e.g. to `upgrade` all applications you use `upgrade-all`.\n   `pipxu` simply offers a `--all` option on each of those base commands\n   to do the same thing, thus avoiding the need for the extra `*-all`\n   commands. Also, `pipx` also does not offer `--skip` for all those\n   `*-all` commands consistently, whereas `pipxu` does.\n\n2. You can do `pipxu` commands on an editable projects (as often used by\n   developers) in the current directory by simply typing \"`.`\" as the\n   package name and this works for all commands. E.g. `pipxu uninstall\n   .` or `pipxu inject . pudb`. I.e. `pipxu` automatically determines\n   the package name associated with the current directory. Note that\n   `pipx` accepts \"`.`\" for the install command, but not for any others.\n\n3. For Python developers,`pipxu` adds a [`debug`](#command-debug)\n   command to conveniently run an installed application using a\n   debugger. `pipx` does not have this command. Read more about the\n   `debug` command [here](doc/debug.md).\n\n4. If run as root or with `sudo`, `pipxu` installs applications to a\n   global location.\n\n## Environment Variables\n\nType `pipxu` without any arguments to see usage and the current\nenvironment. The environment is printed at the bottom of the screen\noutput as follows:\n\nE.g. run as my user \"mark\":\n\n```\nEnvironment:\nPIPXU_HOME = /home/mark/.local/share/pipxu\nPIPXU_BIN_DIR = /home/mark/.local/bin\nPIPXU_MAN_DIR = /home/mark/.local/share/man\nPIPXU_DEFAULT_PYTHON = python3\n\nYour PATH contains PIPXU_BIN_DIR (/home/mark/.local/bin).\n```\n\nOr run as root, or with [`sudo`](https://www.sudo.ws/):\n\n```\nEnvironment:\nPIPXU_HOME = /opt/pipxu\nPIPXU_BIN_DIR = /usr/local/bin\nPIPXU_MAN_DIR = /usr/local/share/man\nPIPXU_DEFAULT_PYTHON = python3\n\nWARNING: Your PATH does not contain PIPXU_BIN_DIR (/usr/local/bin).\n```\n\nYou can set those environment variables, or provide them as command line\noptions, to override the defaults if you want. Note, as seen in the\noutput above, `pipxu` reports if `PIPXU_BIN_DIR` is included or not in\nyour PATH. To ensure you can run the applications installed by `pipxu`,\nthat directory **must be in your PATH**. E.g. for most users on Linux\nusing the default locations, ensure that `~/.local/bin` is [added to\nyour PATH environment variable][path].\n\n## Command Default Options\n\nYou can add default global options to a personal configuration file\n`~/.config/pipxu-flags.conf`. If that file exists then each line of\noptions will be concatenated and automatically prepended to your `pipxu`\ncommand line arguments. Comments in the file (i.e. `#` and anything\nafter on a line) are ignored. Type `pipxu` to see all supported options.\n\nThe global options: `--uv`, `--no-man-pages`, `--home`, `--bin-dir`,\n`--man-dir`, `--default-python`, are the only sensible candidates to\nconsider setting as defaults.\n\n## Command Line Tab Completion\n\nCommand line shell [tab\ncompletion](https://en.wikipedia.org/wiki/Command-line_completion) is\nautomatically enabled on `pipxu` commands and options using\n[`argcomplete`](https://github.com/kislyuk/argcomplete). You may need to\nfirst (once-only) [activate argcomplete global\ncompletion](https://github.com/kislyuk/argcomplete#global-completion).\n\n## License\n\nCopyright (C) 2024 Mark Blakeney. This program is distributed under the\nterms of the GNU General Public License. This program is free software:\nyou can redistribute it and/or modify it under the terms of the GNU\nGeneral Public License as published by the Free Software Foundation,\neither version 3 of the License, or any later version. This program is\ndistributed in the hope that it will be useful, but WITHOUT ANY\nWARRANTY; without even the implied warranty of MERCHANTABILITY or\nFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License at\n<http://www.gnu.org/licenses/> for more details.\n\n[pipxu]: https://github.com/bulletmark/pipxu\n[pipx]: https://github.com/pypa/pipx\n[uv]: https://github.com/astral-sh/uv\n[venv]: https://docs.python.org/3/library/venv.html\n[pip]: https://pip.pypa.io/en/stable/\n[pypi]: https://pypi.org/\n[path]: https://www.baeldung.com/linux/path-variable\n\n<!-- vim: se ai syn=markdown: -->\n",
    "bugtrack_url": null,
    "license": "GPLv3",
    "summary": "Install and Run Python Applications in Isolated Environments using UV",
    "version": "1.17",
    "project_urls": {
        "Homepage": "https://github.com/bulletmark/pipxu"
    },
    "split_keywords": [
        "pipx",
        " pip",
        " uv",
        " venv",
        " virtualenv"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "6ded12d2d54442e984b692a13d8f3e15db778f624486ab3ead8613d391cd68ea",
                "md5": "a0da4166064c441cec83406f27e63230",
                "sha256": "fbe954df74a0d7db1b38c0c838effa2dc8c7a7b4a2c749e3af716892f7e7c2f9"
            },
            "downloads": -1,
            "filename": "pipxu-1.17-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "a0da4166064c441cec83406f27e63230",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 23879,
            "upload_time": "2024-05-08T02:33:30",
            "upload_time_iso_8601": "2024-05-08T02:33:30.152804Z",
            "url": "https://files.pythonhosted.org/packages/6d/ed/12d2d54442e984b692a13d8f3e15db778f624486ab3ead8613d391cd68ea/pipxu-1.17-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3b3f26fd0f1504e22553ec776490e4ec13f5a6ed808390ff4e840de974966521",
                "md5": "2c293910cb7f21f4861f22bdee18c14e",
                "sha256": "ab0baab282aff1301b3d5f94d4c1ea0dac36b18ddbd0601f626d4417038fee37"
            },
            "downloads": -1,
            "filename": "pipxu-1.17.tar.gz",
            "has_sig": false,
            "md5_digest": "2c293910cb7f21f4861f22bdee18c14e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 23552,
            "upload_time": "2024-05-08T02:33:32",
            "upload_time_iso_8601": "2024-05-08T02:33:32.483112Z",
            "url": "https://files.pythonhosted.org/packages/3b/3f/26fd0f1504e22553ec776490e4ec13f5a6ed808390ff4e840de974966521/pipxu-1.17.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-08 02:33:32",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "bulletmark",
    "github_project": "pipxu",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "pipxu"
}
        
Elapsed time: 0.27974s