Bug 1576924

Summary: [Errno 2] No such file or directory: '/usr/local/lib/python3.6/site-packages
Product: [Fedora] Fedora Reporter: Corey Farrell <git>
Component: python3Assignee: Miro Hrončok <mhroncok>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: urgent    
Version: 28CC: bkabrda, cstratak, dmalcolm, mhroncok, Michael.Clerx, pviktori, rkuska, shcherbina.iryna, tomspur, torsava
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: python-setuptools-39.2.0-6.fc29 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2018-07-29 03:25:09 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1664722, 1808301    

Description Corey Farrell 2018-05-10 18:09:09 UTC
Description of problem:
When trying to install starpy (https://github.com/asterisk/starpy) I 

Version-Release number of selected component (if applicable):
python3-3.6.5-1.fc28.x86_64

How reproducible:
Every time

Steps to Reproduce:
1. Download a python module with a standard setup.py.
2. Run: python3 setup.py build
3. Run: sudo python3 setup.py install

Actual results:
Error output:
running install
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 2] No such file or directory: '/usr/local/lib/python3.6/site-packages/test-easy-install-11875.write-test'

The installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:

    /usr/local/lib/python3.6/site-packages/

This directory does not currently exist.  Please create it and try again, or
choose a different installation directory (using the -d or --install-dir
option).


Expected results:
Module should be installed to /usr/lib/python3.6/site-packages

Additional info:
Work-around is to run:
sudo python3 setup.py install --prefix=/usr

This was not needed in Fedora 26, and is not needed with python2 (which installs to /usr/lib/python2.7/site-packages without needing to specify --prefix).

Comment 1 Miro Hrončok 2018-05-10 19:19:29 UTC
Actually the new prefix is a documented Fedora change: https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe

However the failure here is a bug.

Michal, could you please have a look at this? I remember proposing that python3-libs should own those directories, but for some reason, that would be bad and those are created on runtime, but I forgot when.

Comment 2 Michal Cyprian 2018-06-11 14:09:54 UTC
We discussed this case some time ago and we considered including /usr/lib(64)?/python3.6./site-packages in python3-libs.

When pip3 is run with root privileges for the first time, it simply creates missing directories. This failure happens only if user runs 'python3 setup.py install' or 'easy_install foo' on the system where sudo pip3 was not used before to install packages. I guess this is not very frequent use case.

If we want to fix this, two possible solutions come to my mind:
1. include /usr/local/lib(64)?/python3.6/site-packages in python3-libs (some exception is needed if I remember correctly)
2. Patch setuptools/distutils install command to create directories when necessary

Comment 4 Michael Clerx 2018-07-18 12:00:01 UTC
It fails in a similar way when using 

    python3 setup develop

or

  pip3 install -e .

Comment 6 Michael Clerx 2018-07-19 09:53:52 UTC
Why can't they be installed in /usr/lib or /usr/lib64, as is the case for Python2.7 ?

Comment 7 Miro Hrončok 2018-07-19 09:57:24 UTC
because users regularly nuked their systems with sudo pip3. (usually destroying dnf) See https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe for rationale.

Comment 8 Charalampos Stratakis 2018-07-20 14:41:47 UTC
I verified that the bug is there and also the PR fixes it. I'd prefer to take it upstream though.

Comment 9 Fedora Update System 2018-07-26 09:54:50 UTC
python-setuptools-39.2.0-6.fc28 has been submitted as an update to Fedora 28. https://bodhi.fedoraproject.org/updates/FEDORA-2018-47d56cbe45

Comment 10 Fedora Update System 2018-07-26 09:57:14 UTC
python-setuptools-37.0.0-2.fc27 has been submitted as an update to Fedora 27. https://bodhi.fedoraproject.org/updates/FEDORA-2018-66d5c87587

Comment 11 Fedora Update System 2018-07-26 14:17:06 UTC
python-setuptools-37.0.0-2.fc27 has been pushed to the Fedora 27 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-66d5c87587

Comment 12 Fedora Update System 2018-07-26 16:33:35 UTC
python-setuptools-39.2.0-6.fc28 has been pushed to the Fedora 28 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-47d56cbe45

Comment 13 Fedora Update System 2018-07-29 03:25:09 UTC
python-setuptools-39.2.0-6.fc28 has been pushed to the Fedora 28 stable repository. If problems still persist, please make note of it in this bug report.

Comment 14 Fedora Update System 2018-08-09 16:50:48 UTC
python-setuptools-37.0.0-2.fc27 has been pushed to the Fedora 27 stable repository. If problems still persist, please make note of it in this bug report.