Getting issue while installing openwisp
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 25/100
- Issue type
- Bug
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- python
- Domain
- build-system
Research direction
Start with the reported Ansible reproduction using hosts, playbook.yml, and the ansible-playbook command, then inspect the failed installation of Pillow 9.1.1 under Python 3.12. Confirm whether the setuptools build-environment error can be reproduced and determine what change would allow the openwisp-controller dependency installation to complete.
Written by the indexing model from the issue text.
Description
setuptools version
68.1.2
Python version
3.12
OS
Ubuntu 24.4
Additional environment information
No response
Description
TASK [openwisp.openwisp2 : Install openwisp2 controller and its dependencies] *******************************************************************************
FAILED - RETRYING: [192.168.144.170]: Install openwisp2 controller and its dependencies (5 retries left).
FAILED - RETRYING: [192.168.144.170]: Install openwisp2 controller and its dependencies (4 retries left).
FAILED - RETRYING: [192.168.144.170]: Install openwisp2 controller and its dependencies (3 retries left).
FAILED - RETRYING: [192.168.144.170]: Install openwisp2 controller and its dependencies (2 retries left).
FAILED - RETRYING: [192.168.144.170]: Install openwisp2 controller and its dependencies (1 retries left).
fatal: [192.168.144.170]: FAILED! => {"attempts": 5, "changed": false, "cmd": ["/opt/openwisp2/env/bin/pip3", "install", "-U", "openwisp-controller~=1.0.1", "service_identity"], "msg": "stdout: Collecting openwisp-controller~=1.0.1\n Using cached openwisp_controller-1.0.3-py2.py3-none-any.whl.metadata (139 kB)\nCollecting service_identity\n Using cached service_identity-24.2.0-py3-none-any.whl.metadata (5.1 kB)\nCollecting django-sortedm2m~=3.1.1 (from openwisp-controller~=1.0.1)\n Using cached django_sortedm2m-3.1.1-py2.py3-none-any.whl.metadata (19 kB)\nCollecting django-reversion~=4.0.1 (from openwisp-controller~=1.0.1)\n Using cached django_reversion-4.0.2-py3-none-any.whl.metadata (3.6 kB)\nCollecting django-x509~=1.1.0 (from openwisp-controller~=1.0.1)\n Using cached django_x509-1.1-py2.py3-none-any.whl.metadata (19 kB)\nCollecting django-taggit~=2.1.0 (from openwisp-controller~=1.0.1)\n Using cached django_taggit-2.1.0-py3-none-any.whl.metadata (3.5 kB)\nCollecting django-loci~=1.0.1 (from openwisp-controller~=1.0.1)\n Using cached django_loci-1.0.1-py2.py3-none-any.whl.metadata (16 kB)\nCollecting django-flat-json-widget~=0.2.0 (from openwisp-controller~=1.0.1)\n Using cached django_flat_json_widget-0.2-py2.py3-none-any.whl.metadata (5.1 kB)\nCollecting openwisp-utils~=1.0.1 (from openwisp-utils[rest]=1.0.1->openwisp-controller=1.0.1)\n Using cached openwisp_utils-1.0.5-py2.py3-none-any.whl.metadata (63 kB)\nCollecting netjsonconfig~=1.0.1 (from openwisp-controller~=1.0.1)\n Using cached netjsonconfig-1.0.2-py2.py3-none-any.whl.metadata (3.8 kB)\nCollecting openwisp-users~=1.0.0 (from openwisp-controller~=1.0.1)\n Using cached openwisp_users-1.0.2-py2.py3-none-any.whl.metadata (44 kB)\nCollecting openwisp-notifications~=1.0.0 (from openwisp-controller~=1.0.1)\n Using cached openwisp_notifications-1.0.3-py2.py3-none-any.whl.metadata (55 kB)\nCollecting openwisp-ipam~=1.0.0 (from openwisp-controller~=1.0.1)\n Using cached openwisp_ipam-1.0-py2.py3-none-any.whl.metadata (24 kB)\nCollecting djangorestframework-gis~=0.18.0 (from openwisp-controller~=1.0.1)\n Using cached djangorestframework_gis-0.18-py2.py3-none-any.whl.metadata (29 kB)\nCollecting paramiko~=2.10.3 (from paramiko[ed25519]=2.10.3->openwisp-controller=1.0.1)\n Using cached paramiko-2.10.6-py2.py3-none-any.whl.metadata (4.6 kB)\nCollecting scp~=0.14.2 (from openwisp-controller~=1.0.1)\n Using cached scp-0.14.5-py2.py3-none-any.whl.metadata (4.3 kB)\nCollecting celery~=5.2.3 (from openwisp-controller~=1.0.1)\n Using cached celery-5.2.7-py3-none-any.whl.metadata (20 kB)\nCollecting django-cache-memoize~=0.1 (from openwisp-controller~=1.0.1)\n Using cached django_cache_memoize-0.2.0-py3-none-any.whl.metadata (15 kB)\nCollecting shortuuid~=1.0.1 (from openwisp-controller~=1.0.1)\n Using cached shortuuid-1.0.13-py3-none-any.whl.metadata (5.8 kB)\nRequirement already satisfied: netaddr~=0.8.0 in /usr/lib/python3/dist-packages (from openwisp-controller~=1.0.1) (0.8.0)\nRequirement already satisfied: attrs>=19.1.0 in /opt/openwisp2/env/lib/python3.12/site-packages (from service_identity) (24.2.0)\nRequirement already satisfied: cryptography in /usr/lib/python3/dist-packages (from service_identity) (41.0.7)\nCollecting pyasn1 (from service_identity)\n Using cached pyasn1-0.6.1-py3-none-any.whl.metadata (8.4 kB)\nCollecting pyasn1-modules (from service_identity)\n Using cached pyasn1_modules-0.4.1-py3-none-any.whl.metadata (3.5 kB)\nRequirement already satisfied: pytz>=2021.3 in /usr/lib/python3/dist-packages (from celery~=5.2.3->openwisp-controller~=1.0.1) (2024.1)\nCollecting billiard<4.0,>=3.6.4.0 (from celery~=5.2.3->openwisp-controller~=1.0.1)\n Using cached billiard-3.6.4.0-py3-none-any.whl.metadata (4.5 kB)\nCollecting kombu<6.0,>=5.2.3 (from celery~=5.2.3->openwisp-controller~=1.0.1)\n Using cached kombu-5.4.2-py3-none-any.whl.metadata (3.2 kB)\nCollecting vine<6.0,>=5.0.0 (from celery~=5.2.3->openwisp-controller~=1.0.1)\n Using cached vine-5.1.0-py3-none-any.whl.metadata (2.7 kB)\nRequirement already satisfied: click<9.0,>=8.0.3 in /usr/lib/python3/dist-packages (from celery~=5.2.3->openwisp-controller~=1.0.1) (8.1.6)\nCollecting click-didyoumean>=0.0.3 (from celery~=5.2.3->openwisp-controller~=1.0.1)\n Using cached click_didyoumean-0.3.1-py3-none-any.whl.metadata (3.9 kB)\nCollecting click-repl>=0.2.0 (from celery~=5.2.3->openwisp-controller~=1.0.1)\n Using cached click_repl-0.3.0-py3-none-any.whl.metadata (3.6 kB)\nCollecting click-plugins>=1.1.1 (from celery~=5.2.3->openwisp-controller~=1.0.1)\n Using cached click_plugins-1.1.1-py2.py3-none-any.whl.metadata (6.4 kB)\nCollecting django<4.1.0,>=3.0 (from django-loci~=1.0.1->openwisp-controller~=1.0.1)\n Using cached Django-4.0.10-py3-none-any.whl.metadata (4.1 kB)\nCollecting channels~=3.0.4 (from django-loci~=1.0.1->openwisp-controller~=1.0.1)\n Using cached channels-3.0.5-py3-none-any.whl.metadata (1.3 kB)\nCollecting django-leaflet~=0.28.0 (from django-loci~=1.0.1->openwisp-controller~=1.0.1)\n Using cached django_leaflet-0.28.3-py3-none-any.whl.metadata (16 kB)\nCollecting Pillow~=9.1.0 (from django-loci~=1.0.1->openwisp-controller~=1.0.1)\n Using cached Pillow-9.1.1.tar.gz (49.8 MB)\n Preparing metadata (setup.py): started\n Preparing metadata (setup.py): finished with status 'error'\n\n:stderr: error: subprocess-exited-with-error\n \n × python setup.py egg_info did not run successfully.\n │ exit code: 1\n ╰─> [3 lines of output]\n /opt/openwisp2/env/lib/python3.12/site-packages/_distutils_hack/init.py:53: UserWarning: Reliance on distutils from stdlib is deprecated. Users must rely on setuptools to provide the distutils module. Avoid importing distutils or import setuptools first, and avoid setting SETUPTOOLS_USE_DISTUTILS=stdlib. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml\n warnings.warn(\n ERROR: Can not execute setup.py since setuptools is not available in the build environment.\n [end of output]\n \n note: This error originates from a subprocess, and is likely not a problem with pip.\nerror: metadata-generation-failed\n\n× Encountered error while generating package metadata.\n╰─> See above for output.\n\nnote: This is an issue with the package mentioned above, not pip.\nhint: See above for details.\n"}
How to Reproduce
sudo apt install ansible-core
sudo apt install python3-pip
sudo apt install sshpass
sudo apt install curl
sudo apt install git
pip install Jinja2>=2.11 --break-system-packages
sudo ssh-keyscan -H 127.0.0.1 >> ~/.ssh/known_hosts
sudo ssh-keyscan -H 192.168.211.132 >> ~/.ssh/known_hosts
sudo ssh-keyscan -H localhost >> ~/.ssh/known_hosts
PermitRootLogin yes line in the /etc/ssh/sshd_config
should be able to ssh its own ip and also be added to sudoers
ansible-galaxy collection install "community.general:>=3.6.0" --force
ansible-galaxy collection install "ansible.posix" --force
ansible-galaxy install openwisp.openwisp2 --force
mkdir ~/openwisp2-ansible-playbook
cd ~/openwisp2-ansible-playbook
place below content in hosts file:
[openwisp2]
192.168.211.132
place below content in playbook.yml file
-
hosts: openwisp2
roles:- openwisp.openwisp2
the following line is needed only when an IP address is used as the inventory hostname
vars:
postfix_myhostname: localhost
#ansible-playbook -i hosts playbook.yml -b -k -K --become-method=su
ansible-playbook -i hosts playbook.yml -u ctadmin -k --become -K
======================================== OR
now create playbook with : -
hosts: openwisp2
become: "{{ become | default('yes') }}"
roles:- openwisp.openwisp2
vars:
openwisp2_radius: true
openwisp2_freeradius_install: true
set to false when you don't want to register openwisp-radius
API endpoints.
openwisp2_radius_urls: true
============================================================= - openwisp.openwisp2
Other detail
TASK [openwisp.openwisp2 : Install openwisp2 controller and its dependencies] *******************************************************************************
FAILED - RETRYING: [192.168.144.170]: Install openwisp2 controller and its dependencies (5 retries left).
FAILED - RETRYING: [192.168.144.170]: Install openwisp2 controller and its dependencies (4 retries left).
FAILED - RETRYING: [192.168.144.170]: Install openwisp2 controller and its dependencies (3 retries left).
FAILED - RETRYING: [192.168.144.170]: Install openwisp2 controller and its dependencies (2 retries left).
FAILED - RETRYING: [192.168.144.170]: Install openwisp2 controller and its dependencies (1 retries left).
fatal: [192.168.144.170]: FAILED! => {"attempts": 5, "changed": false, "cmd": ["/opt/openwisp2/env/bin/pip3", "install", "-U", "openwisp-controller~=1.0.1", "service_identity"], "msg": "stdout: Collecting openwisp-controller~=1.0.1\n Using cached openwisp_controller-1.0.3-py2.py3-none-any.whl.metadata (139 kB)\nCollecting service_identity\n Using cached service_identity-24.2.0-py3-none-any.whl.metadata (5.1 kB)\nCollecting django-sortedm2m~=3.1.1 (from openwisp-controller~=1.0.1)\n Using cached django_sortedm2m-3.1.1-py2.py3-none-any.whl.metadata (19 kB)\nCollecting django-reversion~=4.0.1 (from openwisp-controller~=1.0.1)\n Using cached django_reversion-4.0.2-py3-none-any.whl.metadata (3.6 kB)\nCollecting django-x509~=1.1.0 (from openwisp-controller~=1.0.1)\n Using cached django_x509-1.1-py2.py3-none-any.whl.metadata (19 kB)\nCollecting django-taggit~=2.1.0 (from openwisp-controller~=1.0.1)\n Using cached django_taggit-2.1.0-py3-none-any.whl.metadata (3.5 kB)\nCollecting django-loci~=1.0.1 (from openwisp-controller~=1.0.1)\n Using cached django_loci-1.0.1-py2.py3-none-any.whl.metadata (16 kB)\nCollecting django-flat-json-widget~=0.2.0 (from openwisp-controller~=1.0.1)\n Using cached django_flat_json_widget-0.2-py2.py3-none-any.whl.metadata (5.1 kB)\nCollecting openwisp-utils~=1.0.1 (from openwisp-utils[rest]~=1.0.1->openwisp-controller~=1.0.1)\n Using cached openwisp_utils-1.0.5-py2.py3-none-any.whl.metadata (63 kB)\nCollecting netjsonconfig~=1.0.1 (from openwisp-controller~=1.0.1)\n Using cached netjsonconfig-1.0.2-py2.py3-none-any.whl.metadata (3.8 kB)\nCollecting openwisp-users~=1.0.0 (from openwisp-controller~=1.0.1)\n Using cached openwisp_users-1.0.2-py2.py3-none-any.whl.metadata (44 kB)\nCollecting openwisp-notifications~=1.0.0 (from openwisp-controller~=1.0.1)\n Using cached openwisp_notifications-1.0.3-py2.py3-none-any.whl.metadata (55 kB)\nCollecting openwisp-ipam~=1.0.0 (from openwisp-controller~=1.0.1)\n Using cached openwisp_ipam-1.0-py2.py3-none-any.whl.metadata (24 kB)\nCollecting djangorestframework-gis~=0.18.0 (from openwisp-controller~=1.0.1)\n Using cached djangorestframework_gis-0.18-py2.py3-none-any.whl.metadata (29 kB)\nCollecting paramiko~=2.10.3 (from paramiko[ed25519]~=2.10.3->openwisp-controller~=1.0.1)\n Using cached paramiko-2.10.6-py2.py3-none-any.whl.metadata (4.6 kB)\nCollecting scp~=0.14.2 (from openwisp-controller~=1.0.1)\n Using cached scp-0.14.5-py2.py3-none-any.whl.metadata (4.3 kB)\nCollecting celery~=5.2.3 (from openwisp-controller~=1.0.1)\n Using cached celery-5.2.7-py3-none-any.whl.metadata (20 kB)\nCollecting django-cache-memoize~=0.1 (from openwisp-controller~=1.0.1)\n Using cached django_cache_memoize-0.2.0-py3-none-any.whl.metadata (15 kB)\nCollecting shortuuid~=1.0.1 (from openwisp-controller~=1.0.1)\n Using cached shortuuid-1.0.13-py3-none-any.whl.metadata (5.8 kB)\nRequirement already satisfied: netaddr~=0.8.0 in /usr/lib/python3/dist-packages (from openwisp-controller~=1.0.1) (0.8.0)\nRequirement already satisfied: attrs>=19.1.0 in /opt/openwisp2/env/lib/python3.12/site-packages (from service_identity) (24.2.0)\nRequirement already satisfied: cryptography in /usr/lib/python3/dist-packages (from service_identity) (41.0.7)\nCollecting pyasn1 (from service_identity)\n Using cached pyasn1-0.6.1-py3-none-any.whl.metadata (8.4 kB)\nCollecting pyasn1-modules (from service_identity)\n Using cached pyasn1_modules-0.4.1-py3-none-any.whl.metadata (3.5 kB)\nRequirement already satisfied: pytz>=2021.3 in /usr/lib/python3/dist-packages (from celery~=5.2.3->openwisp-controller~=1.0.1) (2024.1)\nCollecting billiard<4.0,>=3.6.4.0 (from celery~=5.2.3->openwisp-controller~=1.0.1)\n Using cached billiard-3.6.4.0-py3-none-any.whl.metadata (4.5 kB)\nCollecting kombu<6.0,>=5.2.3 (from celery~=5.2.3->openwisp-controller~=1.0.1)\n Using cached kombu-5.4.2-py3-none-any.whl.metadata (3.2 kB)\nCollecting vine<6.0,>=5.0.0 (from celery~=5.2.3->openwisp-controller~=1.0.1)\n Using cached vine-5.1.0-py3-none-any.whl.metadata (2.7 kB)\nRequirement already satisfied: click<9.0,>=8.0.3 in /usr/lib/python3/dist-packages (from celery~=5.2.3->openwisp-controller~=1.0.1) (8.1.6)\nCollecting click-didyoumean>=0.0.3 (from celery~=5.2.3->openwisp-controller~=1.0.1)\n Using cached click_didyoumean-0.3.1-py3-none-any.whl.metadata (3.9 kB)\nCollecting click-repl>=0.2.0 (from celery~=5.2.3->openwisp-controller~=1.0.1)\n Using cached click_repl-0.3.0-py3-none-any.whl.metadata (3.6 kB)\nCollecting click-plugins>=1.1.1 (from celery~=5.2.3->openwisp-controller~=1.0.1)\n Using cached click_plugins-1.1.1-py2.py3-none-any.whl.metadata (6.4 kB)\nCollecting django<4.1.0,>=3.0 (from django-loci~=1.0.1->openwisp-controller~=1.0.1)\n Using cached Django-4.0.10-py3-none-any.whl.metadata (4.1 kB)\nCollecting channels~=3.0.4 (from django-loci~=1.0.1->openwisp-controller~=1.0.1)\n Using cached channels-3.0.5-py3-none-any.whl.metadata (1.3 kB)\nCollecting django-leaflet~=0.28.0 (from django-loci~=1.0.1->openwisp-controller~=1.0.1)\n Using cached django_leaflet-0.28.3-py3-none-any.whl.metadata (16 kB)\nCollecting Pillow~=9.1.0 (from django-loci~=1.0.1->openwisp-controller~=1.0.1)\n Using cached Pillow-9.1.1.tar.gz (49.8 MB)\n Preparing metadata (setup.py): started\n Preparing metadata (setup.py): finished with status 'error'\n\n:stderr: error: subprocess-exited-with-error\n \n × python setup.py egg_info did not run successfully.\n │ exit code: 1\n ╰─> [3 lines of output]\n /opt/openwisp2/env/lib/python3.12/site-packages/_distutils_hack/__init__.py:53: UserWarning: Reliance on distutils from stdlib is deprecated. Users must rely on setuptools to provide the distutils module. Avoid importing distutils or import setuptools first, and avoid setting SETUPTOOLS_USE_DISTUTILS=stdlib. Register concerns at https://github.com/pypa/setuptools/issues/new?template=distutils-deprecation.yml\n warnings.warn(\n ERROR: Can not execute `setup.py` since setuptools is not available in the build environment.\n [end of output]\n \n note: This error originates from a subprocess, and is likely not a problem with pip.\nerror: metadata-generation-failed\n\n× Encountered error while generating package metadata.\n╰─> See above for output.\n\nnote: This is an issue with the package mentioned above, not pip.\nhint: See above for details.\n"}
- Dominant language
- Python
- Stars
- 2.9k
- Forks
- 1.4k
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 1
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from pypa/setuptools
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
pypa/setuptools#5272 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
pypa/setuptools#5235 · 1 comment · 1 reaction ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
pypa/setuptools#5234 · 1 comment ·
-
bug Needs Triage
Difficulty 1/5 Under an hour Newbie friendliness 78/100
pypa/setuptools#4135 · 1 comment · 1 reaction ·
-
documentation Needs Triage
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
pypa/setuptools#2753 ·
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
bancolombia/sentinel#23 ·
-
test md OpenCI
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
-
integration:quickjs org:external priority:backlog topic:code-interpreter topic:middleware type:feature
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
langchain-ai/deepagents#6450 ·
-
bug client
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100