Bug 2017839 - pip install --user -e . fails
Summary: pip install --user -e . fails
Keywords:
Status: CLOSED UPSTREAM
Alias: None
Product: Fedora
Classification: Fedora
Component: python3.9
Version: 34
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Miro Hrončok
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2021-10-27 14:11 UTC by david08741
Modified: 2021-10-29 13:20 UTC (History)
7 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2021-10-29 10:29:59 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github pypa pip issues 7953 0 None open Cannot install into user site directory with editable source. 2021-10-27 16:57:20 UTC

Description david08741 2021-10-27 14:11:51 UTC
Description of problem:
The setup.py call is appended with --prefix= - which breaks installation, bailing on not being able to write to /usr/local - or, even worse, if it is writable, put's the files there rather then in $HOME.

Using --prefix=~/.local instead of --user works as expected.

Version-Release number of selected component (if applicable):
python3-3.9.6-2.fc34.x86_64

How reproducible:
always

Steps to Reproduce:
$ dnf install git
$ python3 -m ensurepip
$ pip install -U pip
$ useradd test
$ su test
$ cd
$ git clone https://github.com/dschwoerer/xemc3
$ pip install --user -e xemc3

Actual results:
         cwd: /home/test/xemc3/
    Complete output (35 lines):
    /tmp/pip-build-env-rexipg1m/overlay/lib/python3.9/site-packages/setuptools/__init__.py:148: SetuptoolsDeprecationWarning: setup_requires is deprecated. Supply build dependencies using PEP 517 pyproject.toml build-requires.
      warnings.warn(
    running develop
    /tmp/pip-build-env-rexipg1m/overlay/lib/python3.9/site-packages/setuptools/command/easy_install.py:156: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
      warnings.warn(
    WARNING: The user site-packages directory is disabled.
    /tmp/pip-build-env-rexipg1m/overlay/lib/python3.9/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
      warnings.warn(
    Checking .pth file support in /usr/local/lib/python3.9/site-packages/
    error: can't create or remove files in install directory
    
    The following error occurred while trying to add or remove files in the
    installation directory:
    
        [Errno 13] Permission denied: '/usr/local/lib/python3.9/site-packages/test-easy-install-145.pth'
    
    The installation directory you specified (via --install-dir, --prefix, or
    the distutils default setting) was:
    
        /usr/local/lib/python3.9/site-packages/
    
    Perhaps your account does not have write access to this directory?  If the
    installation directory is a system-owned directory, you may need to sign in
    as the administrator or "root" account.  If you do not have administrative
    access to this machine, you may wish to choose a different installation
    directory, preferably one that is listed in your PYTHONPATH environment
    variable.
    
    For information on other options, you may wish to consult the
    documentation at:
    
      https://setuptools.readthedocs.io/en/latest/deprecated/easy_install.html
    
    Please make the appropriate changes for your system and try again.
    
    ----------------------------------------
ERROR: Command errored out with exit status 1: /usr/bin/python3 -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/home/test/xemc3/setup.py'"'"'; __file__='"'"'/home/test/xemc3/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' develop --no-deps --user --prefix= Check the logs for full command output.

Expected results:
install succeeds into ~/.local/

Additional info:
Reported upstream at, got closed as being specific to fedora's python https://github.com/pypa/pip/issues/10616

Comment 1 Miro Hrončok 2021-10-27 16:38:01 UTC
> Reported upstream at, got closed as being specific to fedora's python https://github.com/pypa/pip/issues/10616

I have reproduced the problem with upstream Python. I have commented on the upstream issue.


I have however also verified that if the `pip install -U pip` step is skipped, it also happens.

Comment 2 Miro Hrončok 2021-10-29 10:29:59 UTC
Since upstream has acknowledged the problem and a workaround exists, this is not something I'd like to track downstream. Feel free to reopen this bugzilla when upstream fixes the problem, in case you need a backport, but I see you update pip from upstream, so you most likely won't need it.

Thanks for reporting the problem!

Comment 3 david08741 2021-10-29 13:20:12 UTC
Thanks for looking into this!


Note You need to log in before you can comment on or make changes to this bug.