#74 [3.0.0] ModuleNotFoundError: No module named 'setuptools.command.build', Setuptools >= 62.4.0 required
Closed: Fixed by bignose. Opened by hswong3i.

For legacy OS with Python 3.6 + setuptools 59.6.0 (latest release for 3.6), e.g. CentOS 7/8, openSUSE 15.4 and Ubuntu 18.04, will fail with following message (e.g. https://build.opensuse.org/package/live_build_log/home:alvistack/pagure.io-python-daemon-3.0.0/CentOS_8_Stream/x86_64)

[   84s] + exec rpmbuild -ba --define '_srcdefattr (-,root,root)' --nosignature --undefine _enable_debug_packages --define 'disturl obs://build.opensuse.org/home:alvistack/CentOS_8_Stream/43a8fbbea38fddfc4b582257e580e293-pagure.io-python-daemon-3.0.0' /home/abuild/rpmbuild/SOURCES/python-daemon_3.0.0-1.spec
[   84s] Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.rYE9zM
[   84s] + umask 022
[   84s] + cd /home/abuild/rpmbuild/BUILD
[   84s] + cd /home/abuild/rpmbuild/BUILD
[   84s] + rm -rf python-daemon_3.0.0-1.1
[   84s] + /usr/bin/mkdir -p python-daemon_3.0.0-1.1
[   84s] + cd python-daemon_3.0.0-1.1
[   84s] + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w .
[   84s] + tar -zx -f /home/abuild/rpmbuild/SOURCES/python-daemon_3.0.0.orig.tar.gz --strip-components=1 -C .
[   84s] + exit 0
[   84s] Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.qG90pv
[   84s] + umask 022
[   84s] + cd /home/abuild/rpmbuild/BUILD
[   84s] + cd python-daemon_3.0.0-1.1
[   84s] + CFLAGS='-O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection'
[   84s] + LDFLAGS='-Wl,-z,relro  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld'
[   84s] + /usr/bin/python3.6 setup.py build '--executable=/usr/bin/python3.6 -s'
[   84s] Traceback (most recent call last):
[   84s]   File "setup.py", line 20, in <module>
[   84s]     import version  # noqa: E402
[   84s]   File "/home/abuild/rpmbuild/BUILD/python-daemon_3.0.0-1.1/version.py", line 35, in <module>
[   84s]     import setuptools.command.build
[   84s] ModuleNotFoundError: No module named 'setuptools.command.build'
[   84s] error: Bad exit status from /var/tmp/rpm-tmp.qG90pv (%build)

This is because setuptools.command.build was introduced since 62.4.0 (see https://github.com/pypa/wheel/issues/487#issuecomment-1307574510), which require Python >= 3.7.

From this point of view, we need to update our 3.0.x release with minimum python_requires=">=3.7", too


Thanks @hswong3i,

This is because setuptools.command.build was introduced since 62.4.0 (see https://github.com/pypa/wheel/issues/487#issuecomment-1307574510), which require Python >= 3.7.

So, this would be better addressed by directly declaring the Setuptools version dependency, no? And the Python minimum version will be inferred from that.

I have created a merge request that directly declares a Setuptools minimum version dependency. Can you try this and confirm it resolves this issue?

Oh how a good idea, and why not both ?_?

Sometime double fail-safe may looks overkill, but specifying python_requires=">=3.7" could also make it clear we had drop support for legacy EOL Python 3.6, with a new birth 3.0.x major release ;-)

Oh how a good idea, and why not both ?_?

I'll treat the Python dependency as a separate matter.

Meanwhile, would you try the version on that branch, and confirm this minimal change does resolve the issue in your test environment?

The local changes with https://pagure.io/python-daemon/pull-request/77 doesn't means anything when pip working directly pypi.org?

Moreover, I had already proof with https://build.opensuse.org/package/show/home:alvistack/pagure.io-python-daemon-3.0.0, that legacy OS with Python 3.6 fail for sure, where modern OS with Python >= 3.7 + setuptools >= 62.4.0 could package + install deb/rpm correctly.

I could re-test once you have a new version release to pypi.org, and provide feedback ASAP with my local OBS deb/rpm packaging experience.

The local changes with https://pagure.io/python-daemon/pull-request/77 doesn't means anything when pip working directly pypi.org?

Please test using the TestPyPI repository; I have uploaded a "release candidate" there (version "3.0.1rc1"). You can direct 'pip' to that repository:

https://packaging.python.org/en/latest/guides/using-testpypi/#using-testpypi-with-pip

Moreover, I had already proof with https://build.opensuse.org/package/show/home:alvistack/pagure.io-python-daemon-3.0.0, that legacy OS with Python 3.6 fail for sure, where modern OS with Python >= 3.7 + setuptools >= 62.4.0 could package + install deb/rpm correctly.

Yes. What still needs to be tested, is the specification of a minimum Setuptools version in the package, and how that affects your test environment.

I don't feel good enough? Still 3.0.0 could be selected from test.pypi.org, where my local setuptools == 39.0.1 installed from Ubuntu 18.04 apt:

$ sudo podman run -ti --rm ubuntu:18.04
root@ffa5d504980c:/# apt update && apt -y full-upgrade && apt -y install python3-dev python3-pip
root@ffa5d504980c:/# python3 --version
Python 3.6.9
root@ffa5d504980c:/# pip3 --version
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
root@ffa5d504980c:/# pip3 install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ python-daemon
Collecting python-daemon
  Using cached https://test-files.pythonhosted.org/packages/ff/33/014116323e7088e76bc4d667a2090a86ded5b228eccdb803c2fe1110f3d9/python_daemon-3.0.0-py3-none-any.whl
Collecting docutils (from python-daemon)
  Downloading https://test-files.pythonhosted.org/packages/38/7f/70667cd16cf6f444fe19c5cea86414772600ee77af41ad4338a3c02b8f75/docutils-0.18.1-py2.py3-none-any.whl (570kB)
    100% |################################| 573kB 2.7MB/s 
Requirement already satisfied: setuptools in /usr/lib/python3/dist-packages (from python-daemon)
Collecting lockfile>=0.10 (from python-daemon)
  Downloading https://files.pythonhosted.org/packages/c8/22/9460e311f340cb62d26a38c419b1381b8593b0bb6b5d1f056938b086d362/lockfile-0.12.2-py2.py3-none-any.whl
Installing collected packages: docutils, lockfile, python-daemon
Successfully installed docutils-0.18.1 lockfile-0.12.2 python-daemon-3.0.0
root@ffa5d504980c:/# pip3 list --format=legacy                  
asn1crypto (0.24.0)
cryptography (2.1.4)
docutils (0.18.1)
idna (2.6)
keyring (10.6.0)
keyrings.alt (3.0)
lockfile (0.12.2)
pip (9.0.1)
pycrypto (2.6.1)
pygobject (3.26.1)
python-daemon (3.0.0)
pyxdg (0.25)
SecretStorage (2.3.1)
setuptools (39.0.1)
six (1.11.0)
wheel (0.30.0)
root@ffa5d504980c:/# pip3 show setuptools
Name: setuptools
Version: 39.0.1
Summary: Easily download, build, install, upgrade, and uninstall Python packages
Home-page: https://github.com/pypa/setuptools
Author: Python Packaging Authority
Author-email: distutils-sig@python.org
License: UNKNOWN
Location: /usr/lib/python3/dist-packages
Requires: 
root@ffa5d504980c:/# pip3 show python-daemon
Name: python-daemon
Version: 3.0.0
Summary: Library to implement a well-behaved Unix daemon process.
Home-page: https://pagure.io/python-daemon/
Author: Ben Finney
Author-email: ben+python@benfinney.id.au
License: Apache-2
Location: /usr/local/lib/python3.6/dist-packages
Requires: setuptools, lockfile, docutils

Another try with directly install 3.0.1rc1 and failed as expected, complain with setuptools>=62.4.0:

root@80c7fff71566:/# pip3 install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ python-daemon==3.0.1rc1
Collecting python-daemon==3.0.1rc1
  Downloading https://test-files.pythonhosted.org/packages/e8/4d/aee4ab3c40929852f1691b7ce051c596deb0eef387261e77252b06faf090/python_daemon-3.0.1rc1-py3-none-any.whl
Collecting setuptools>=62.4.0 (from python-daemon==3.0.1rc1)
  Could not find a version that satisfies the requirement setuptools>=62.4.0 (from python-daemon==3.0.1rc1) (from versions: 0.6b1, 0.6b2, 0.6b3, 0.6b4, 0.6rc1, 0.6rc2, 0.6rc3, 0.6rc4, 0.6rc5, 0.6rc6, 0.6rc7, 0.6rc8, 0.6rc9, 0.6rc10, 0.6rc11, 0.7.2, 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.7.8, 0.8, 0.9, 0.9.1, 0.9.2, 0.9.3, 0.9.4, 0.9.5, 0.9.6, 0.9.7, 0.9.8, 1.0, 1.1, 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.1.5, 1.1.6, 1.1.7, 1.2, 1.3, 1.3.1, 1.3.2, 1.4, 1.4.1, 1.4.2, 2.0, 2.0.1, 2.0.2, 2.1, 2.1.1, 2.1.2, 2.2, 3.0, 3.0.1, 3.0.2, 3.1, 3.2, 3.3, 3.4, 3.4.1, 3.4.2, 3.4.3, 3.4.4, 3.5, 3.5.1, 3.5.2, 3.6, 3.7, 3.7.1, 3.8, 3.8.1, 4.0, 4.0.1, 5.0, 5.0.1, 5.0.2, 5.1, 5.2, 5.3, 5.4, 5.4.1, 5.4.2, 5.5, 5.5.1, 5.6, 5.7, 5.8, 6.0.1, 6.0.2, 6.1, 7.0, 8.0, 8.0.1, 8.0.2, 8.0.3, 8.0.4, 8.1, 8.2, 8.2.1, 8.3, 9.0, 9.0.1, 9.1, 10.0, 10.0.1, 10.1, 10.2, 10.2.1, 11.0, 11.1, 11.2, 11.3, 11.3.1, 12.0, 12.0.1, 12.0.2, 12.0.3, 12.0.4, 12.0.5, 12.1, 12.2, 12.3, 12.4, 13.0.1, 13.0.2, 14.0, 14.1, 14.1.1, 14.2, 14.3, 14.3.1, 15.0, 15.1, 15.2, 16.0, 17.0, 17.1, 17.1.1, 18.0, 18.0.1, 18.1, 18.2, 18.3, 18.3.1, 18.3.2, 18.4, 18.5, 18.6, 18.6.1, 18.7, 18.7.1, 18.8, 18.8.1, 19.0, 19.1, 19.1.1, 19.2, 19.3, 19.4, 19.4.1, 19.5, 19.6, 19.6.1, 19.6.2, 19.7, 20.0, 20.1, 20.1.1, 20.2.2, 20.3, 20.3.1, 20.4, 20.6.6, 20.6.7, 20.6.8, 20.7.0, 20.8.0, 20.8.1, 20.9.0, 20.10.1, 21.0.0, 21.1.0, 21.2.0, 21.2.1, 21.2.2, 22.0.0, 22.0.1, 22.0.2, 22.0.4, 22.0.5, 23.0.0, 23.1.0, 23.2.0, 23.2.1, 24.0.0, 24.0.1, 24.0.2, 24.0.3, 24.1.0, 24.1.1, 24.2.0, 24.2.1, 24.3.0, 24.3.1, 25.0.0, 25.0.1, 25.0.2, 25.1.0, 25.1.1, 25.1.2, 25.1.3, 25.1.4, 25.1.5, 25.1.6, 25.2.0, 25.3.0, 25.4.0, 26.0.0, 26.1.0, 26.1.1, 27.0.0, 27.1.0, 27.1.2, 27.2.0, 27.3.0, 27.3.1, 28.0.0, 28.1.0, 28.2.0, 28.3.0, 28.4.0, 28.5.0, 28.6.0, 28.6.1, 28.7.0, 28.7.1, 28.8.0, 28.8.1, 29.0.0, 29.0.1, 30.0.0, 30.1.0, 30.2.0, 30.2.1, 30.3.0, 30.4.0, 31.0.0, 31.0.1, 32.0.0, 32.1.0, 32.1.1, 32.1.2, 32.1.3, 32.2.0, 32.3.0, 32.3.1, 33.1.0, 33.1.1, 34.0.0, 34.0.1, 34.0.2, 34.0.3, 34.1.0, 34.1.1, 34.2.0, 34.3.0, 34.3.1, 34.3.2, 34.3.3, 34.4.0, 34.4.1, 35.0.0, 35.0.1, 35.0.2, 36.0.1, 36.1.0, 36.1.1, 36.2.0, 36.2.1, 36.2.2, 36.2.3, 36.2.4, 36.2.5, 36.2.6, 36.2.7, 36.3.0, 36.4.0, 36.5.0, 36.6.0, 36.6.1, 36.7.0, 36.7.1, 36.7.2, 36.8.0, 37.0.0, 38.0.0, 38.1.0, 38.2.0, 38.2.1, 38.2.3, 38.2.4, 38.2.5, 38.3.0, 38.4.0, 38.4.1, 38.5.0, 38.5.1, 38.5.2, 38.6.0, 38.6.1, 38.7.0, 39.0.0, 39.0.1, 39.1.0, 39.2.0, 40.0.0, 40.1.0, 40.1.1, 40.2.0, 40.3.0, 40.4.0, 40.4.1, 40.4.2, 40.4.3, 40.5.0, 40.6.0, 40.6.1, 40.6.2, 40.6.3, 40.7.0, 40.7.1, 40.7.2, 40.7.3, 40.8.0, 40.9.0, 41.0.0, 41.0.1, 41.1.0, 41.2.0, 41.3.0, 41.4.0, 41.5.0, 41.5.1, 41.6.0, 42.0.0, 42.0.1, 42.0.2, 43.0.0, 44.0.0, 44.1.0, 44.1.1, 45.0.0, 45.1.0, 45.2.0, 45.3.0, 46.0.0, 46.1.0, 46.1.1, 46.1.2, 46.1.3, 46.2.0, 46.3.0, 46.3.1, 46.4.0, 47.0.0, 47.1.0, 47.1.1, 47.2.0, 47.3.0, 47.3.1, 47.3.2, 48.0.0, 49.0.0, 49.0.1, 49.1.0, 49.1.1, 49.1.2, 49.1.3, 49.2.0, 49.2.1, 49.3.0, 49.3.1, 49.3.2, 49.4.0, 49.5.0, 49.6.0, 50.0.0, 50.0.1, 50.0.2, 50.0.3, 50.1.0, 50.2.0, 50.3.0, 50.3.1, 50.3.2, 51.0.0, 51.1.0, 51.1.0.post20201221, 51.1.1, 51.1.2, 51.2.0, 51.3.0, 51.3.1, 51.3.2, 51.3.3, 52.0.0, 53.0.0, 53.1.0, 54.0.0, 54.1.0, 54.1.1, 54.1.2, 54.1.3, 54.2.0, 56.0.0, 56.1.0, 56.2.0, 57.0.0, 57.1.0, 57.2.0, 57.3.0, 57.4.0, 57.5.0, 58.0.0, 58.0.1, 58.0.2, 58.0.3, 58.0.4, 58.1.0, 58.2.0, 58.3.0, 58.4.0, 58.5.0, 58.5.1, 58.5.2, 58.5.3, 59.0.1, 59.1.0, 59.1.1, 59.2.0, 59.3.0, 59.4.0, 59.5.0, 59.6.0)
No matching distribution found for setuptools>=62.4.0 (from python-daemon==3.0.1rc1)

Another try with directly install 3.0.1rc1 and failed as expected, complain with setuptools>=62.4.0

Thank you, that suffices to prevent a broken installation. And the error message correctly identifies exactly which package needs to be upgraded.

I have released 'python-daemon' version 3.0.1 with this dependency as described.

Metadata Update from @bignose:
- Issue close_status updated to: Fixed
- Issue status updated to: Closed (was: Open)

Now at least with default ubuntu:18.04 + pip3 == 9.0.1 could failed correctly:

$ sudo podman run -ti --rm ubuntu:18.04 bash
root@c99b8432fe69:/# apt update && apt -y full-upgrade && apt -y install python3-dev python3-pip
root@c99b8432fe69:/# pip3 --version
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
root@c99b8432fe69:/# pip3 install python-daemon
Collecting python-daemon
  Using cached https://files.pythonhosted.org/packages/83/7f/feffd97af851e2a837b5ca9bfbe570002c45397734724e4abfd4c62fdd0d/python_daemon-3.0.1-py3-none-any.whl
Collecting lockfile>=0.10 (from python-daemon)
  Downloading https://files.pythonhosted.org/packages/c8/22/9460e311f340cb62d26a38c419b1381b8593b0bb6b5d1f056938b086d362/lockfile-0.12.2-py2.py3-none-any.whl
Collecting docutils (from python-daemon)
  Downloading https://files.pythonhosted.org/packages/8d/14/69b4bad34e3f250afe29a854da03acb6747711f3df06c359fa053fae4e76/docutils-0.18.1-py2.py3-none-any.whl (570kB)
    100% |################################| 573kB 2.9MB/s 
Collecting setuptools>=62.4.0 (from python-daemon)
  Could not find a version that satisfies the requirement setuptools>=62.4.0 (from python-daemon) (from versions: 0.6b1, 0.6b2, 0.6b3, 0.6b4, 0.6rc1, 0.6rc2, 0.6rc3, 0.6rc4, 0.6rc5, 0.6rc6, 0.6rc7, 0.6rc8, 0.6rc9, 0.6rc10, 0.6rc11, 0.7.2, 0.7.3, 0.7.4, 0.7.5, 0.7.6, 0.7.7, 0.7.8, 0.8, 0.9, 0.9.1, 0.9.2, 0.9.3, 0.9.4, 0.9.5, 0.9.6, 0.9.7, 0.9.8, 1.0, 1.1, 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.1.5, 1.1.6, 1.1.7, 1.2, 1.3, 1.3.1, 1.3.2, 1.4, 1.4.1, 1.4.2, 2.0, 2.0.1, 2.0.2, 2.1, 2.1.1, 2.1.2, 2.2, 3.0, 3.0.1, 3.0.2, 3.1, 3.2, 3.3, 3.4, 3.4.1, 3.4.2, 3.4.3, 3.4.4, 3.5, 3.5.1, 3.5.2, 3.6, 3.7, 3.7.1, 3.8, 3.8.1, 4.0, 4.0.1, 5.0, 5.0.1, 5.0.2, 5.1, 5.2, 5.3, 5.4, 5.4.1, 5.4.2, 5.5, 5.5.1, 5.6, 5.7, 5.8, 6.0.1, 6.0.2, 6.1, 7.0, 8.0, 8.0.1, 8.0.2, 8.0.3, 8.0.4, 8.1, 8.2, 8.2.1, 8.3, 9.0, 9.0.1, 9.1, 10.0, 10.0.1, 10.1, 10.2, 10.2.1, 11.0, 11.1, 11.2, 11.3, 11.3.1, 12.0, 12.0.1, 12.0.2, 12.0.3, 12.0.4, 12.0.5, 12.1, 12.2, 12.3, 12.4, 13.0.1, 13.0.2, 14.0, 14.1, 14.1.1, 14.2, 14.3, 14.3.1, 15.0, 15.1, 15.2, 16.0, 17.0, 17.1, 17.1.1, 18.0, 18.0.1, 18.1, 18.2, 18.3, 18.3.1, 18.3.2, 18.4, 18.5, 18.6, 18.6.1, 18.7, 18.7.1, 18.8, 18.8.1, 19.0, 19.1, 19.1.1, 19.2, 19.3, 19.4, 19.4.1, 19.5, 19.6, 19.6.1, 19.6.2, 19.7, 20.0, 20.1, 20.1.1, 20.2.2, 20.3, 20.3.1, 20.4, 20.6.6, 20.6.7, 20.6.8, 20.7.0, 20.8.0, 20.8.1, 20.9.0, 20.10.1, 21.0.0, 21.1.0, 21.2.0, 21.2.1, 21.2.2, 22.0.0, 22.0.1, 22.0.2, 22.0.4, 22.0.5, 23.0.0, 23.1.0, 23.2.0, 23.2.1, 24.0.0, 24.0.1, 24.0.2, 24.0.3, 24.1.0, 24.1.1, 24.2.0, 24.2.1, 24.3.0, 24.3.1, 25.0.0, 25.0.1, 25.0.2, 25.1.0, 25.1.1, 25.1.2, 25.1.3, 25.1.4, 25.1.5, 25.1.6, 25.2.0, 25.3.0, 25.4.0, 26.0.0, 26.1.0, 26.1.1, 27.0.0, 27.1.0, 27.1.2, 27.2.0, 27.3.0, 27.3.1, 28.0.0, 28.1.0, 28.2.0, 28.3.0, 28.4.0, 28.5.0, 28.6.0, 28.6.1, 28.7.0, 28.7.1, 28.8.0, 28.8.1, 29.0.0, 29.0.1, 30.0.0, 30.1.0, 30.2.0, 30.2.1, 30.3.0, 30.4.0, 31.0.0, 31.0.1, 32.0.0, 32.1.0, 32.1.1, 32.1.2, 32.1.3, 32.2.0, 32.3.0, 32.3.1, 33.1.0, 33.1.1, 34.0.0, 34.0.1, 34.0.2, 34.0.3, 34.1.0, 34.1.1, 34.2.0, 34.3.0, 34.3.1, 34.3.2, 34.3.3, 34.4.0, 34.4.1, 35.0.0, 35.0.1, 35.0.2, 36.0.1, 36.1.0, 36.1.1, 36.2.0, 36.2.1, 36.2.2, 36.2.3, 36.2.4, 36.2.5, 36.2.6, 36.2.7, 36.3.0, 36.4.0, 36.5.0, 36.6.0, 36.6.1, 36.7.0, 36.7.1, 36.7.2, 36.8.0, 37.0.0, 38.0.0, 38.1.0, 38.2.0, 38.2.1, 38.2.3, 38.2.4, 38.2.5, 38.3.0, 38.4.0, 38.4.1, 38.5.0, 38.5.1, 38.5.2, 38.6.0, 38.6.1, 38.7.0, 39.0.0, 39.0.1, 39.1.0, 39.2.0, 40.0.0, 40.1.0, 40.1.1, 40.2.0, 40.3.0, 40.4.0, 40.4.1, 40.4.2, 40.4.3, 40.5.0, 40.6.0, 40.6.1, 40.6.2, 40.6.3, 40.7.0, 40.7.1, 40.7.2, 40.7.3, 40.8.0, 40.9.0, 41.0.0, 41.0.1, 41.1.0, 41.2.0, 41.3.0, 41.4.0, 41.5.0, 41.5.1, 41.6.0, 42.0.0, 42.0.1, 42.0.2, 43.0.0, 44.0.0, 44.1.0, 44.1.1, 45.0.0, 45.1.0, 45.2.0, 45.3.0, 46.0.0, 46.1.0, 46.1.1, 46.1.2, 46.1.3, 46.2.0, 46.3.0, 46.3.1, 46.4.0, 47.0.0, 47.1.0, 47.1.1, 47.2.0, 47.3.0, 47.3.1, 47.3.2, 48.0.0, 49.0.0, 49.0.1, 49.1.0, 49.1.1, 49.1.2, 49.1.3, 49.2.0, 49.2.1, 49.3.0, 49.3.1, 49.3.2, 49.4.0, 49.5.0, 49.6.0, 50.0.0, 50.0.1, 50.0.2, 50.0.3, 50.1.0, 50.2.0, 50.3.0, 50.3.1, 50.3.2, 51.0.0, 51.1.0, 51.1.0.post20201221, 51.1.1, 51.1.2, 51.2.0, 51.3.0, 51.3.1, 51.3.2, 51.3.3, 52.0.0, 53.0.0, 53.1.0, 54.0.0, 54.1.0, 54.1.1, 54.1.2, 54.1.3, 54.2.0, 56.0.0, 56.1.0, 56.2.0, 57.0.0, 57.1.0, 57.2.0, 57.3.0, 57.4.0, 57.5.0, 58.0.0, 58.0.1, 58.0.2, 58.0.3, 58.0.4, 58.1.0, 58.2.0, 58.3.0, 58.4.0, 58.5.0, 58.5.1, 58.5.2, 58.5.3, 59.0.1, 59.1.0, 59.1.1, 59.2.0, 59.3.0, 59.4.0, 59.5.0, 59.6.0)
No matching distribution found for setuptools>=62.4.0 (from python-daemon)

With my image with pip3 == 21.3.1 from OBS (see https://build.opensuse.org/package/show/home:alvistack/pypa-pip-21.3.1), it could successfully select the legacy 2.3.2 version:

$ sudo podman run -ti --rm alvistack/ubuntu-18.04 bash
root@42a128782bbf:~# apt update && apt -y full-upgrade && apt -y install python3-dev python3-pip
root@42a128782bbf:~# pip3 --version
pip 21.3.1 from /usr/lib/python3/dist-packages/pip (python 3.6)
root@42a128782bbf:~# pip3 install python-daemon
Collecting python-daemon
  Downloading python_daemon-3.0.1-py3-none-any.whl (31 kB)
Collecting docutils
  Downloading docutils-0.18.1-py2.py3-none-any.whl (570 kB)
     |████████████████████████████████| 570 kB 22.0 MB/s            
Collecting python-daemon
  Downloading python_daemon-2.3.2-py3-none-any.whl (34 kB)
Requirement already satisfied: setuptools in /usr/lib/python3/dist-packages (from python-daemon) (59.6.0)
Collecting lockfile>=0.10
  Downloading lockfile-0.12.2-py2.py3-none-any.whl (13 kB)
Installing collected packages: lockfile, docutils, python-daemon
Successfully installed docutils-0.18.1 lockfile-0.12.2 python-daemon-2.3.2
root@42a128782bbf:~# pip3 show python-daemon
Name: python-daemon
Version: 2.3.2
Summary: Library to implement a well-behaved Unix daemon process.
Home-page: https://pagure.io/python-daemon/
Author: Ben Finney
Author-email: ben+python@benfinney.id.au
License: Apache-2
Location: /usr/local/lib/python3.6/dist-packages
Requires: docutils, lockfile, setuptools
Required-by: 

Therefore problem goes to if end-user have a new enough pip for understanding the yanked package from pypi.org, but at least here we had already do our best to provide correct information ;-)

In case for ubuntu:20.04:

$ sudo podman run -ti --rm ubuntu:20.04
root@9a6a83d1c3cf:/# apt update && apt -y full-upgrade && apt -y install python3-dev python3-pip
root@9a6a83d1c3cf:/# pip3 --version
pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)
root@9a6a83d1c3cf:/# pip3 install python-daemon
Collecting python-daemon
  Downloading python_daemon-3.0.1-py3-none-any.whl (31 kB)
Collecting setuptools>=62.4.0
  Downloading setuptools-67.5.1-py3-none-any.whl (1.1 MB)
     |████████████████████████████████| 1.1 MB 20.9 MB/s 
Collecting docutils
  Downloading docutils-0.19-py3-none-any.whl (570 kB)
     |████████████████████████████████| 570 kB 83.9 MB/s 
Collecting lockfile>=0.10
  Downloading lockfile-0.12.2-py2.py3-none-any.whl (13 kB)
Installing collected packages: setuptools, docutils, lockfile, python-daemon
  Attempting uninstall: setuptools
    Found existing installation: setuptools 45.2.0
    Not uninstalling setuptools at /usr/lib/python3/dist-packages, outside environment /usr
    Can't uninstall 'setuptools'. No files were found to uninstall.
Successfully installed docutils-0.19 lockfile-0.12.2 python-daemon-3.0.1 setuptools-67.5.1
root@9a6a83d1c3cf:/# pip3 show python-daemon
Name: python-daemon
Version: 3.0.1
Summary: Library to implement a well-behaved Unix daemon process.
Home-page: https://pagure.io/python-daemon/
Author: Ben Finney
Author-email: ben+python@benfinney.id.au
License: Apache-2
Location: /usr/local/lib/python3.8/dist-packages
Requires: docutils, lockfile, setuptools
Required-by: 

P.S. My OBS packaging for python-daemon 3.0.1 working perfectly, see https://build.opensuse.org/package/show/home:alvistack/pagure.io-python-daemon-3.0.1

Metadata
Related Pull Requests