Skip to content

pipx install --global partially installs in ~/.local #1475

@viscruocco

Description

@viscruocco

Describe the bug

When executing pipx install --global:

  • It correctly installs the venvs to /opt/pipx/venvs and the binaries and manual pages to /usr/local/bin and /usr/local/man.
  • The shared-libs are mistakenly installed to ~/.local/share/pipx.
  • Empty and unused ~/.local/bin and ~/.local/share/man directories are created. (This can be a problem if there are no write permissions to ~/.local, e.g. in a docker container without a proper user home directory.)

How to reproduce

$ docker run -it --rm python:3 bash
$$ pip install git+https://github.com/pypa/pipx.git
$$ pipx install --global cowsay
$$ which cowsay
/usr/local/bin/cowsay   # --> good
$$ ls /opt/pipx/venvs
cowsay                  # --> good
$$ ls /opt/pipx/
venvs                   # --> bad: bin and share should be here
$$ ls ~/.local/
bin  share  state       # --> bad: bin and share should NOT exist here; good: state/pipx/log is ok here
$ ls ~/.local/bin/
                        # --> bad: ~/.local/share/bin is empty
$ ls ~/.local/share/
man  pipx               # --> bad: ~/.local/share/pipx is actually created and used here

Expected behavior

$ docker run -it --rm python:3 bash
$$ pip install git+https://github.com/pypa/pipx.git
$$ pipx install --global cowsay
$$ which cowsay
/usr/local/bin/cowsay
$$ ls /opt/pipx/venvs
cowsay
$$ ls /opt/pipx/
bin  share  venvs
$$ ls ~/.local/
state

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions