timetagger_cli icon indicating copy to clipboard operation
timetagger_cli copied to clipboard

Installation with pipx

Open georgkrause opened this issue 1 year ago • 2 comments

The readme suggests to install timetagger using pip, however it would be much better to use pipx instead, because it will be installed in its own encapsulated virtual environment instead of as a user space package.

pipx might need to be installed, first, however its the recommended way to install python applications.

I am willing to submit a Pull Request as soon as willingness to accept the patch is visible :)

georgkrause avatar Nov 18 '24 11:11 georgkrause

The thing is, there are quite a few installers out there, which each have their benefits. Why not uv, or poetry 😉

Pip is usually backed into Python, and its what most people know. Maybe we can add a line: "You can replace pip with your favorite packaging tool", or something along that line. What do you think?

almarklein avatar Nov 19 '24 07:11 almarklein

Why not uv, or poetry

Poetry is built as a development tool, while uv has even more features and functionalities. Also, pipx is developed by the very same people who develop pip. Its is basically recommended for externally managed vens (see PEP0668 ). As far as I know most distributions ship pipx next to python or with an easy to install binary package, which isn't the case for poetry and even less for uv.

Also I'd argue that people who use uv or poetry might know what they do anyways and ignore the Readme. However, people who are not exactly sure what is happening might run the command and run into the following error with python 3.12 and above:

× This environment is externally managed
╰─> To install Python packages system-wide, try 'pacman -S
    python-xyz', where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Arch-packaged Python package,
    create a virtual environment using 'python -m venv path/to/venv'.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip.
    
    If you wish to install a non-Arch packaged Python application,
    it may be easiest to use 'pipx install xyz', which will manage a
    virtual environment for you. Make sure you have python-pipx
    installed via pacman.

To frame it differently, the current Readme tells people to run an install command which will fail in some cases, a growing number of cases! And even if it doesn't fail, its just simply a bad idea to globally install a package like this. pipx solves all those problems.

georgkrause avatar Nov 19 '24 08:11 georgkrause

+1 on suggesting pipx in the docs/readme. pipx is specifically meant for installing cli tooling, it's not a regular package manager.

IrrerPolterer avatar May 16 '25 15:05 IrrerPolterer