almarklein / timetagger_cli

Track your time from the command-line
MIT License
43 stars 8 forks source link

Installation with pipx #24

Open georgkrause opened 1 week ago

georgkrause commented 1 week ago

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 :)

almarklein commented 1 week ago

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?

georgkrause commented 1 week ago

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.