Using Different versions of python with pipx | pyenv ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ I love using pipx for automatic virtual environment management of my globally installed python cli applications, but sometimes the application is not... Date: May 28, 2022 Image: “cell shaded, long, full body, shot of a cybernetic blue soldier with glowing pink eyes, llustration, post grunge, cinebatic dramatic atmosphere, sharp focus, pink glowing volumetric lighting, concept art by josan gonzales and wlop, by james jean, Victo ngai, David Rubín, Mike Mignola, Laurie Greasley, highly detailed, sharp focus,alien,Trending on Artstation, HQ, deviantart, art by artgem” -s50 -W832 -H416 -C7.5 -Ak_lms -S70567464 I love using pipx for automatic virtual environment </virtual-environment/> management of my globally installed python cli applications, but sometimes the application is not compatible with your globally installed pipx Which version of python is pipx using?? ─────────────────────────────────────── This one took me a minute to figure out at first, please let me know if there is a better way. I am pretty certain that this is not the ideal way, but it works. My first technique was to make a package that printed out sys.version. [code] # what version of python does the global pipx use? pipx run --spec git+https://github.com/waylonwalker/pyvers pyvers # what version of python does the local pipx use? python -m pipx run --spec git+https://github.com/waylonwalker/pyvers pyvers Let’s setup some other versions of python with pyenv ──────────────────────────────────────────────────── │ If you don’t already have pyenv <https://github.com/pyenv/pyenv> installed, you can follow their install instructions <https://github.com/pyenv/pyenv#installation> to get it. [code] pyenv install 3.8.13 pyenv install 3.10.5 I usually require a virtual environment ─────────────────────────────────────── I set the PIP_REQUIRE_VIRTUALENV environment variable to true to ensure that the virtual environment is activated when pip installing, this makes it so that I can’t accidentally use the global env, which is typically not what I want to do. [code] export PIP_REQUIRE_VIRTUALENV=true # for windows users set PIP_REQUIRE_VIRTUALENV=true │ This goes right into my shell startup script ~/.bashrc or ~/.zshrc. Exceptions happen ───────────────── This is my one exception. I’ve had better luck putting pipx right in the global python environment. Not the system python, but each python version that I install with pyenv. [code] export PIP_REQUIRE_VIRTUALENV=false # for windows users set PIP_REQUIRE_VIRTUALENV=false Let’s install pipx ────────────────── First up is python 3.10.5 [code] pyenv global 3.10.5 pip install pipx pipx run --spec git+https://github.com/waylonwalker/pyvers pyvers 3.10.5 (main, Jun 6 2022, 18:49:26) [GCC 12.1.0] Next is python 3.8.13j [code] pyenv global 3.8.13 pip install pipx pipx run --spec git+https://github.com/waylonwalker/pyvers pyvers 3.8.13 (default, Aug 8 2022, 21:06:56) [GCC 12.1.0] Now once I close this shell I will always end up with PIP_REQUIRE_VIRTUALENV=true, since it’s in my shell startup script. So make sure that you reset it or kill this shell before doing any damage.