[GH-ISSUE #2708] modoboa-admin.py deploy trips over itself (fails catastrophically trying to uninstall version of django_filter not installed) #1681

Closed
opened 2026-02-27 11:18:32 +03:00 by kerem · 6 comments
Owner

Originally created by @bernd-wechner on GitHub (Dec 11, 2022).
Original GitHub issue: https://github.com/modoboa/modoboa/issues/2708

Impacted versions

  • OS Type: Ubuntu
  • OS Version: 22.04.1 LTS
  • Database Type: PostgreSQL
  • Database version: 14
  • Modoboa: 2.0.3
  • installer used: No
  • Webserver: None yet (lighttpd will be targetted)

Steps to reproduce

Follow the manual installation procedure landing at:

https://modoboa.readthedocs.io/en/latest/manual_installation/modoboa.html#deploy-an-instance

Current behavior

  1. Followed manual procedure to the point of a deply
  2. Using a clean venv populating it with pip install wheel modoboa psycopg2
  3. Then modoboa-admin.py deploy mysite --collectstatic --domain my.domain --dburl default:postgres://modoboa:password@[localhost]/modoboa --extensions all

Output is:

(modoboa) modoboa@mybox:/data/www$ modoboa-admin.py deploy mysite --collectstatic --domain my.domain --dburl default:postgres://modoboa:password@[localhost]/modoboa --extensions all
Collecting modoboa-stats
  Downloading modoboa_stats-1.5.0-py2.py3-none-any.whl (110 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.1/110.1 KB 1.0 MB/s eta 0:00:00
Collecting modoboa-contacts
  Downloading modoboa_contacts-0.9.0-py2.py3-none-any.whl (753 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 753.8/753.8 KB 3.9 MB/s eta 0:00:00
Collecting modoboa-dmarc
  Downloading modoboa_dmarc-1.3.0-py2.py3-none-any.whl (82 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 82.7/82.7 KB 1.5 MB/s eta 0:00:00
Collecting modoboa-pdfcredentials
  Downloading modoboa_pdfcredentials-1.5.0-py2.py3-none-any.whl (70 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 70.0/70.0 KB 1.3 MB/s eta 0:00:00
Collecting modoboa-radicale
  Downloading modoboa_radicale-1.6.0-py2.py3-none-any.whl (1.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 5.6 MB/s eta 0:00:00
Collecting modoboa-postfix-autoreply
  Downloading modoboa_postfix_autoreply-1.7.0-py2.py3-none-any.whl (86 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 86.1/86.1 KB 1.6 MB/s eta 0:00:00
Collecting modoboa-webmail
  Downloading modoboa_webmail-1.7.0-py2.py3-none-any.whl (198 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 198.3/198.3 KB 2.6 MB/s eta 0:00:00
Collecting modoboa-sievefilters
  Downloading modoboa_sievefilters-1.6.0-py2.py3-none-any.whl (121 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 121.9/121.9 KB 2.2 MB/s eta 0:00:00
Collecting modoboa-amavis
  Downloading modoboa_amavis-1.4.0-py2.py3-none-any.whl (187 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 187.1/187.1 KB 2.7 MB/s eta 0:00:00
Collecting modoboa-imap-migration
  Downloading modoboa_imap_migration-1.4.1-py2.py3-none-any.whl (139 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 139.9/139.9 KB 2.2 MB/s eta 0:00:00
Requirement already satisfied: modoboa>=1.15.0 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa-stats) (2.0.3)
Requirement already satisfied: lxml in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa-stats) (4.9.1)
Requirement already satisfied: rrdtool>=0.1.11 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa-stats) (0.1.16)
Collecting django-filter==21.1
  Downloading django_filter-21.1-py3-none-any.whl (81 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 81.4/81.4 KB 1.5 MB/s eta 0:00:00
Collecting vobject
  Downloading vobject-0.9.6.1.tar.gz (58 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.6/58.6 KB 933.6 kB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Collecting caldav==0.9.0
  Downloading caldav-0.9.0.tar.gz (166 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 166.9/166.9 KB 2.5 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Collecting django-webpack-loader==0.7.0
  Downloading django_webpack_loader-0.7.0-py2.py3-none-any.whl (14 kB)
Requirement already satisfied: pytz in /data/venv/modoboa/lib/python3.10/site-packages (from caldav==0.9.0->modoboa-contacts) (2022.6)
Requirement already satisfied: requests in /data/venv/modoboa/lib/python3.10/site-packages (from caldav==0.9.0->modoboa-contacts) (2.28.1)
Requirement already satisfied: six in /data/venv/modoboa/lib/python3.10/site-packages (from caldav==0.9.0->modoboa-contacts) (1.16.0)
Collecting tzlocal
  Downloading tzlocal-4.2-py3-none-any.whl (19 kB)
Requirement already satisfied: Django>=2.2 in /data/venv/modoboa/lib/python3.10/site-packages (from django-filter==21.1->modoboa-contacts) (3.2.16)
Collecting tldextract>=2.0.2
  Downloading tldextract-3.4.0-py3-none-any.whl (93 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 93.9/93.9 KB 1.7 MB/s eta 0:00:00
Collecting defusedxml>=0.6.0
  Downloading defusedxml-0.7.1-py2.py3-none-any.whl (25 kB)
Collecting python-magic>=0.4.24
  Downloading python_magic-0.4.27-py2.py3-none-any.whl (13 kB)
Collecting reportlab
  Downloading reportlab-3.6.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.8/2.8 MB 5.5 MB/s eta 0:00:00
Collecting drf-nested-routers
  Downloading drf_nested_routers-0.93.4-py2.py3-none-any.whl (35 kB)
Requirement already satisfied: chardet in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa-webmail) (5.1.0)
Collecting sievelib>=1.1.1
  Downloading sievelib-1.2.1-py2.py3-none-any.whl (35 kB)
Collecting html2text
  Downloading html2text-2020.1.16-py3-none-any.whl (32 kB)
Requirement already satisfied: idna in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa-amavis) (3.4)
Requirement already satisfied: django-ckeditor==6.3.0 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (6.3.0)
Requirement already satisfied: gevent==22.10.1 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (22.10.1)
Requirement already satisfied: bcrypt in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (4.0.1)
Requirement already satisfied: django-reversion==5.0.3 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (5.0.3)
Requirement already satisfied: aiosmtplib in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (2.0.0)
Requirement already satisfied: dnspython==2.2.1 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (2.2.1)
Requirement already satisfied: feedparser==6.0.10 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (6.0.10)
Requirement already satisfied: djangorestframework-simplejwt==5.2.2 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (5.2.2)
Requirement already satisfied: ovh in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (1.0.0)
Requirement already satisfied: greenlet==1.1.3.post0 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (1.1.3.post0)
Requirement already satisfied: qrcode in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (7.3.1)
Requirement already satisfied: django-phonenumber-field[phonenumbers]==7.0.0 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (7.0.0)
Requirement already satisfied: drf-spectacular in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (0.24.2)
Requirement already satisfied: passlib~=1.7.4 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (1.7.4)
Requirement already satisfied: uritemplate in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (4.1.1)
Requirement already satisfied: djangorestframework<3.15,>=3.11 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (3.14.0)
Requirement already satisfied: oath in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (1.4.4)
Requirement already satisfied: redis in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (4.4.0)
Requirement already satisfied: progressbar33==2.4 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (2.4)
Requirement already satisfied: aioredis==2.0.1 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (2.0.1)
Requirement already satisfied: jsonfield==3.1.0 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (3.1.0)
Requirement already satisfied: asgiref in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (3.5.2)
Requirement already satisfied: py-dateutil==2.2 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (2.2)
Requirement already satisfied: django-otp==1.1.3 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (1.1.3)
Requirement already satisfied: django-xforwardedfor-middleware==2.0 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (2.0)
Requirement already satisfied: cryptography in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (38.0.4)
Requirement already satisfied: dj-database-url in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (1.0.0)
Requirement already satisfied: Pillow in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (9.3.0)
Requirement already satisfied: typing-extensions in /data/venv/modoboa/lib/python3.10/site-packages (from aioredis==2.0.1->modoboa>=1.15.0->modoboa-stats) (4.4.0)
Requirement already satisfied: async-timeout in /data/venv/modoboa/lib/python3.10/site-packages (from aioredis==2.0.1->modoboa>=1.15.0->modoboa-stats) (4.0.2)
Requirement already satisfied: django-js-asset>=1.2.2 in /data/venv/modoboa/lib/python3.10/site-packages (from django-ckeditor==6.3.0->modoboa>=1.15.0->modoboa-stats) (2.0.0)
Requirement already satisfied: phonenumbers>=7.0.2 in /data/venv/modoboa/lib/python3.10/site-packages (from django-phonenumber-field[phonenumbers]==7.0.0->modoboa>=1.15.0->modoboa-stats) (8.13.2)
Requirement already satisfied: pyjwt<3,>=1.7.1 in /data/venv/modoboa/lib/python3.10/site-packages (from djangorestframework-simplejwt==5.2.2->modoboa>=1.15.0->modoboa-stats) (2.6.0)
Requirement already satisfied: sgmllib3k in /data/venv/modoboa/lib/python3.10/site-packages (from feedparser==6.0.10->modoboa>=1.15.0->modoboa-stats) (1.0.0)
Requirement already satisfied: zope.event in /data/venv/modoboa/lib/python3.10/site-packages (from gevent==22.10.1->modoboa>=1.15.0->modoboa-stats) (4.5.0)
Requirement already satisfied: setuptools in /data/venv/modoboa/lib/python3.10/site-packages (from gevent==22.10.1->modoboa>=1.15.0->modoboa-stats) (59.6.0)
Requirement already satisfied: zope.interface in /data/venv/modoboa/lib/python3.10/site-packages (from gevent==22.10.1->modoboa>=1.15.0->modoboa-stats) (5.5.2)
Collecting filelock>=3.0.8
  Downloading filelock-3.8.2-py3-none-any.whl (10 kB)
Collecting requests-file>=1.4
  Downloading requests_file-1.5.1-py2.py3-none-any.whl (3.7 kB)
Collecting python-dateutil>=2.4.0
  Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 KB 3.0 MB/s eta 0:00:00
Requirement already satisfied: sqlparse>=0.2.2 in /data/venv/modoboa/lib/python3.10/site-packages (from Django>=2.2->django-filter==21.1->modoboa-contacts) (0.4.3)
Requirement already satisfied: certifi>=2017.4.17 in /data/venv/modoboa/lib/python3.10/site-packages (from requests->caldav==0.9.0->modoboa-contacts) (2022.12.7)
Requirement already satisfied: charset-normalizer<3,>=2 in /data/venv/modoboa/lib/python3.10/site-packages (from requests->caldav==0.9.0->modoboa-contacts) (2.1.1)
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /data/venv/modoboa/lib/python3.10/site-packages (from requests->caldav==0.9.0->modoboa-contacts) (1.26.13)
Requirement already satisfied: cffi>=1.12 in /data/venv/modoboa/lib/python3.10/site-packages (from cryptography->modoboa>=1.15.0->modoboa-stats) (1.15.1)
Requirement already satisfied: inflection>=0.3.1 in /data/venv/modoboa/lib/python3.10/site-packages (from drf-spectacular->modoboa>=1.15.0->modoboa-stats) (0.5.1)
Requirement already satisfied: PyYAML>=5.1 in /data/venv/modoboa/lib/python3.10/site-packages (from drf-spectacular->modoboa>=1.15.0->modoboa-stats) (6.0)
Requirement already satisfied: jsonschema>=2.6.0 in /data/venv/modoboa/lib/python3.10/site-packages (from drf-spectacular->modoboa>=1.15.0->modoboa-stats) (4.17.3)
Collecting pytz-deprecation-shim
  Downloading pytz_deprecation_shim-0.1.0.post0-py2.py3-none-any.whl (15 kB)
Requirement already satisfied: pycparser in /data/venv/modoboa/lib/python3.10/site-packages (from cffi>=1.12->cryptography->modoboa>=1.15.0->modoboa-stats) (2.21)
Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /data/venv/modoboa/lib/python3.10/site-packages (from jsonschema>=2.6.0->drf-spectacular->modoboa>=1.15.0->modoboa-stats) (0.19.2)
Requirement already satisfied: attrs>=17.4.0 in /data/venv/modoboa/lib/python3.10/site-packages (from jsonschema>=2.6.0->drf-spectacular->modoboa>=1.15.0->modoboa-stats) (22.1.0)
Collecting tzdata
  Downloading tzdata-2022.7-py2.py3-none-any.whl (340 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 340.1/340.1 KB 3.5 MB/s eta 0:00:00
Building wheels for collected packages: caldav, vobject
  Building wheel for caldav (setup.py) ... done
  Created wheel for caldav: filename=caldav-0.9.0-py3-none-any.whl size=53859 sha256=32a39490e89d504d0723acaa060b385305604552d1d3ea7fb56720853df8c61a
  Stored in directory: /home/modoboa/.cache/pip/wheels/a4/43/82/dd24bb217d5389c98ba9df599423a5c6a1143d2a642097e793
  Building wheel for vobject (setup.py) ... done
  Created wheel for vobject: filename=vobject-0.9.6.1-py3-none-any.whl size=47683 sha256=3d0cd2d20167f4ed2d694b9e33302187ca2180c7230935ecff4cc39131ae7aa0
  Stored in directory: /home/modoboa/.cache/pip/wheels/50/30/da/1b11581351fd0d2c273193d7f615532f95a48dcb717af207de
Successfully built caldav vobject
Installing collected packages: sievelib, django-webpack-loader, tzdata, reportlab, python-magic, python-dateutil, html2text, filelock, defusedxml, vobject, requests-file, pytz-deprecation-shim, django-filter, tzlocal, tldextract, drf-nested-routers, caldav, modoboa-webmail, modoboa-stats, modoboa-sievefilters, modoboa-radicale, modoboa-postfix-autoreply, modoboa-pdfcredentials, modoboa-imap-migration, modoboa-dmarc, modoboa-contacts, modoboa-amavis
  Attempting uninstall: django-filter
    Found existing installation: django-filter 22.1
    Uninstalling django-filter-22.1:
      Successfully uninstalled django-filter-22.1
Successfully installed caldav-0.9.0 defusedxml-0.7.1 django-filter-21.1 django-webpack-loader-0.7.0 drf-nested-routers-0.93.4 filelock-3.8.2 html2text-2020.1.16 modoboa-amavis-1.4.0 modoboa-contacts-0.9.0 modoboa-dmarc-1.3.0 modoboa-imap-migration-1.4.1 modoboa-pdfcredentials-1.5.0 modoboa-postfix-autoreply-1.7.0 modoboa-radicale-1.6.0 modoboa-sievefilters-1.6.0 modoboa-stats-1.5.0 modoboa-webmail-1.7.0 python-dateutil-2.8.2 python-magic-0.4.27 pytz-deprecation-shim-0.1.0.post0 reportlab-3.6.12 requests-file-1.5.1 sievelib-1.2.1 tldextract-3.4.0 tzdata-2022.7 tzlocal-4.2 vobject-0.9.6.1
Traceback (most recent call last):
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3031, in _dep_map
    return self.__dep_map
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2828, in __getattr__
    raise AttributeError(attr)
AttributeError: _DistInfoDistribution__dep_map

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3022, in _parsed_pkg_info
    return self._pkg_info
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2828, in __getattr__
    raise AttributeError(attr)
AttributeError: _pkg_info. Did you mean: 'egg_info'?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/venv/modoboa/bin/modoboa-admin.py", line 6, in <module>
    handle_command_line()
  File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/__init__.py", line 99, in handle_command_line
    commands[args.command](commands, verbose=args.verbose).run(remaining)
  File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/__init__.py", line 39, in run
    self.handle(args)
  File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/deploy.py", line 223, in handle
    extra_settings = self.find_extra_settings(extensions)
  File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/deploy.py", line 168, in find_extra_settings
    module = __import__(extension[1], locals(), globals(), [])
  File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa_stats/__init__.py", line 11, in <module>
    __version__ = get_distribution(__name__).version
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 471, in get_distribution
    dist = get_provider(dist)
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 347, in get_provider
    return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 891, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 785, in resolve
    new_requirements = dist.requires(req.extras)[::-1]
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2749, in requires
    dm = self._dep_map
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3033, in _dep_map
    self.__dep_map = self._compute_dependencies()
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3042, in _compute_dependencies
    for req in self._parsed_pkg_info.get_all('Requires-Dist') or []:
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3024, in _parsed_pkg_info
    metadata = self.get_metadata(self.PKG_INFO)
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 1412, in get_metadata
    value = self._get(path)
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 1616, in _get
    with open(path, 'rb') as stream:
FileNotFoundError: [Errno 2] No such file or directory: '/data/venv/modoboa/lib/python3.10/site-packages/django_filter-22.1.dist-info/METADATA'

Do diagnose:

(modoboa) modoboa@mybox:/data/www$ pip freeze
aioredis==2.0.1
aiosmtplib==2.0.0
asgiref==3.5.2
async-timeout==4.0.2
attrs==22.1.0
bcrypt==4.0.1
caldav==0.9.0
certifi==2022.12.7
cffi==1.15.1
chardet==5.1.0
charset-normalizer==2.1.1
cryptography==38.0.4
defusedxml==0.7.1
dj-database-url==1.0.0
Django==3.2.16
django-ckeditor==6.3.0
django-filter==21.1
django-js-asset==2.0.0
django-otp==1.1.3
django-phonenumber-field==7.0.0
django-reversion==5.0.3
django-webpack-loader==0.7.0
django-xforwardedfor-middleware==2.0
djangorestframework==3.14.0
djangorestframework-simplejwt==5.2.2
dnspython==2.2.1
drf-nested-routers==0.93.4
drf-spectacular==0.24.2
feedparser==6.0.10
filelock==3.8.2
gevent==22.10.1
greenlet==1.1.3.post0
html2text==2020.1.16
idna==3.4
inflection==0.5.1
jsonfield==3.1.0
jsonschema==4.17.3
lxml==4.9.1
modoboa==2.0.3
modoboa-amavis==1.4.0
modoboa-contacts==0.9.0
modoboa-dmarc==1.3.0
modoboa-imap-migration==1.4.1
modoboa-pdfcredentials==1.5.0
modoboa-postfix-autoreply==1.7.0
modoboa-radicale==1.6.0
modoboa-sievefilters==1.6.0
modoboa-stats==1.5.0
modoboa-webmail==1.7.0
oath==1.4.4
ovh==1.0.0
passlib==1.7.4
phonenumbers==8.13.2
Pillow==9.3.0
progressbar33==2.4
psycopg2==2.9.5
py-dateutil==2.2
pycparser==2.21
PyJWT==2.6.0
pyrsistent==0.19.2
python-dateutil==2.8.2
python-magic==0.4.27
pytz==2022.6
pytz-deprecation-shim==0.1.0.post0
PyYAML==6.0
qrcode==7.3.1
redis==4.4.0
reportlab==3.6.12
requests==2.28.1
requests-file==1.5.1
rrdtool==0.1.16
sgmllib3k==1.0.0
sievelib==1.2.1
six==1.16.0
sqlparse==0.4.3
tldextract==3.4.0
typing_extensions==4.4.0
tzdata==2022.7
tzlocal==4.2
uritemplate==4.1.1
urllib3==1.26.13
vobject==0.9.6.1
zope.event==4.5.0
zope.interface==5.5.2

Note:

  1. django-filter==21.1 is installed
  2. modoboa-admin.py deploy "Found existing installation: django-filter 22.1" and tried to unsintall it and unsurprisingly bombed because it isn't installed, 21.1 is and the file
    /data/venv/modoboa/lib/python3.10/site-packages/django_filter-22.1.dist-info/METADATA' does indeed not exist, but this one does: /data/venv/modoboa/lib/python3.10/site-packages/django_filter-2`.1.dist-info/METADATA'

Expected behavior

That modoboa-admin.py doesn't see django-filter 22.1 installed when it isn't and does see django-filter 21.1 when it is. To be honest that's one creative bug, I have no idea how it can happen. Will in due course drill into the scripts at see (assuming it reproduces when I empty the venv, and start from start again) but for now, figured it best to report.

Originally created by @bernd-wechner on GitHub (Dec 11, 2022). Original GitHub issue: https://github.com/modoboa/modoboa/issues/2708 # Impacted versions * OS Type: Ubuntu * OS Version: 22.04.1 LTS * Database Type: PostgreSQL * Database version: 14 * Modoboa: 2.0.3 * installer used: No * Webserver: None yet (lighttpd will be targetted) # Steps to reproduce Follow the manual installation procedure landing at: https://modoboa.readthedocs.io/en/latest/manual_installation/modoboa.html#deploy-an-instance # Current behavior 1. Followed manual procedure to the point of a deply 2. Using a clean venv populating it with `pip install wheel modoboa psycopg2` 3. Then `modoboa-admin.py deploy mysite --collectstatic --domain my.domain --dburl default:postgres://modoboa:password@[localhost]/modoboa --extensions all` Output is: ``` (modoboa) modoboa@mybox:/data/www$ modoboa-admin.py deploy mysite --collectstatic --domain my.domain --dburl default:postgres://modoboa:password@[localhost]/modoboa --extensions all Collecting modoboa-stats Downloading modoboa_stats-1.5.0-py2.py3-none-any.whl (110 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 110.1/110.1 KB 1.0 MB/s eta 0:00:00 Collecting modoboa-contacts Downloading modoboa_contacts-0.9.0-py2.py3-none-any.whl (753 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 753.8/753.8 KB 3.9 MB/s eta 0:00:00 Collecting modoboa-dmarc Downloading modoboa_dmarc-1.3.0-py2.py3-none-any.whl (82 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 82.7/82.7 KB 1.5 MB/s eta 0:00:00 Collecting modoboa-pdfcredentials Downloading modoboa_pdfcredentials-1.5.0-py2.py3-none-any.whl (70 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 70.0/70.0 KB 1.3 MB/s eta 0:00:00 Collecting modoboa-radicale Downloading modoboa_radicale-1.6.0-py2.py3-none-any.whl (1.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 5.6 MB/s eta 0:00:00 Collecting modoboa-postfix-autoreply Downloading modoboa_postfix_autoreply-1.7.0-py2.py3-none-any.whl (86 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 86.1/86.1 KB 1.6 MB/s eta 0:00:00 Collecting modoboa-webmail Downloading modoboa_webmail-1.7.0-py2.py3-none-any.whl (198 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 198.3/198.3 KB 2.6 MB/s eta 0:00:00 Collecting modoboa-sievefilters Downloading modoboa_sievefilters-1.6.0-py2.py3-none-any.whl (121 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 121.9/121.9 KB 2.2 MB/s eta 0:00:00 Collecting modoboa-amavis Downloading modoboa_amavis-1.4.0-py2.py3-none-any.whl (187 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 187.1/187.1 KB 2.7 MB/s eta 0:00:00 Collecting modoboa-imap-migration Downloading modoboa_imap_migration-1.4.1-py2.py3-none-any.whl (139 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 139.9/139.9 KB 2.2 MB/s eta 0:00:00 Requirement already satisfied: modoboa>=1.15.0 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa-stats) (2.0.3) Requirement already satisfied: lxml in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa-stats) (4.9.1) Requirement already satisfied: rrdtool>=0.1.11 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa-stats) (0.1.16) Collecting django-filter==21.1 Downloading django_filter-21.1-py3-none-any.whl (81 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 81.4/81.4 KB 1.5 MB/s eta 0:00:00 Collecting vobject Downloading vobject-0.9.6.1.tar.gz (58 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 58.6/58.6 KB 933.6 kB/s eta 0:00:00 Preparing metadata (setup.py) ... done Collecting caldav==0.9.0 Downloading caldav-0.9.0.tar.gz (166 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 166.9/166.9 KB 2.5 MB/s eta 0:00:00 Preparing metadata (setup.py) ... done Collecting django-webpack-loader==0.7.0 Downloading django_webpack_loader-0.7.0-py2.py3-none-any.whl (14 kB) Requirement already satisfied: pytz in /data/venv/modoboa/lib/python3.10/site-packages (from caldav==0.9.0->modoboa-contacts) (2022.6) Requirement already satisfied: requests in /data/venv/modoboa/lib/python3.10/site-packages (from caldav==0.9.0->modoboa-contacts) (2.28.1) Requirement already satisfied: six in /data/venv/modoboa/lib/python3.10/site-packages (from caldav==0.9.0->modoboa-contacts) (1.16.0) Collecting tzlocal Downloading tzlocal-4.2-py3-none-any.whl (19 kB) Requirement already satisfied: Django>=2.2 in /data/venv/modoboa/lib/python3.10/site-packages (from django-filter==21.1->modoboa-contacts) (3.2.16) Collecting tldextract>=2.0.2 Downloading tldextract-3.4.0-py3-none-any.whl (93 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 93.9/93.9 KB 1.7 MB/s eta 0:00:00 Collecting defusedxml>=0.6.0 Downloading defusedxml-0.7.1-py2.py3-none-any.whl (25 kB) Collecting python-magic>=0.4.24 Downloading python_magic-0.4.27-py2.py3-none-any.whl (13 kB) Collecting reportlab Downloading reportlab-3.6.12-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.8 MB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.8/2.8 MB 5.5 MB/s eta 0:00:00 Collecting drf-nested-routers Downloading drf_nested_routers-0.93.4-py2.py3-none-any.whl (35 kB) Requirement already satisfied: chardet in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa-webmail) (5.1.0) Collecting sievelib>=1.1.1 Downloading sievelib-1.2.1-py2.py3-none-any.whl (35 kB) Collecting html2text Downloading html2text-2020.1.16-py3-none-any.whl (32 kB) Requirement already satisfied: idna in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa-amavis) (3.4) Requirement already satisfied: django-ckeditor==6.3.0 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (6.3.0) Requirement already satisfied: gevent==22.10.1 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (22.10.1) Requirement already satisfied: bcrypt in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (4.0.1) Requirement already satisfied: django-reversion==5.0.3 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (5.0.3) Requirement already satisfied: aiosmtplib in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (2.0.0) Requirement already satisfied: dnspython==2.2.1 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (2.2.1) Requirement already satisfied: feedparser==6.0.10 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (6.0.10) Requirement already satisfied: djangorestframework-simplejwt==5.2.2 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (5.2.2) Requirement already satisfied: ovh in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (1.0.0) Requirement already satisfied: greenlet==1.1.3.post0 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (1.1.3.post0) Requirement already satisfied: qrcode in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (7.3.1) Requirement already satisfied: django-phonenumber-field[phonenumbers]==7.0.0 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (7.0.0) Requirement already satisfied: drf-spectacular in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (0.24.2) Requirement already satisfied: passlib~=1.7.4 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (1.7.4) Requirement already satisfied: uritemplate in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (4.1.1) Requirement already satisfied: djangorestframework<3.15,>=3.11 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (3.14.0) Requirement already satisfied: oath in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (1.4.4) Requirement already satisfied: redis in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (4.4.0) Requirement already satisfied: progressbar33==2.4 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (2.4) Requirement already satisfied: aioredis==2.0.1 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (2.0.1) Requirement already satisfied: jsonfield==3.1.0 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (3.1.0) Requirement already satisfied: asgiref in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (3.5.2) Requirement already satisfied: py-dateutil==2.2 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (2.2) Requirement already satisfied: django-otp==1.1.3 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (1.1.3) Requirement already satisfied: django-xforwardedfor-middleware==2.0 in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (2.0) Requirement already satisfied: cryptography in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (38.0.4) Requirement already satisfied: dj-database-url in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (1.0.0) Requirement already satisfied: Pillow in /data/venv/modoboa/lib/python3.10/site-packages (from modoboa>=1.15.0->modoboa-stats) (9.3.0) Requirement already satisfied: typing-extensions in /data/venv/modoboa/lib/python3.10/site-packages (from aioredis==2.0.1->modoboa>=1.15.0->modoboa-stats) (4.4.0) Requirement already satisfied: async-timeout in /data/venv/modoboa/lib/python3.10/site-packages (from aioredis==2.0.1->modoboa>=1.15.0->modoboa-stats) (4.0.2) Requirement already satisfied: django-js-asset>=1.2.2 in /data/venv/modoboa/lib/python3.10/site-packages (from django-ckeditor==6.3.0->modoboa>=1.15.0->modoboa-stats) (2.0.0) Requirement already satisfied: phonenumbers>=7.0.2 in /data/venv/modoboa/lib/python3.10/site-packages (from django-phonenumber-field[phonenumbers]==7.0.0->modoboa>=1.15.0->modoboa-stats) (8.13.2) Requirement already satisfied: pyjwt<3,>=1.7.1 in /data/venv/modoboa/lib/python3.10/site-packages (from djangorestframework-simplejwt==5.2.2->modoboa>=1.15.0->modoboa-stats) (2.6.0) Requirement already satisfied: sgmllib3k in /data/venv/modoboa/lib/python3.10/site-packages (from feedparser==6.0.10->modoboa>=1.15.0->modoboa-stats) (1.0.0) Requirement already satisfied: zope.event in /data/venv/modoboa/lib/python3.10/site-packages (from gevent==22.10.1->modoboa>=1.15.0->modoboa-stats) (4.5.0) Requirement already satisfied: setuptools in /data/venv/modoboa/lib/python3.10/site-packages (from gevent==22.10.1->modoboa>=1.15.0->modoboa-stats) (59.6.0) Requirement already satisfied: zope.interface in /data/venv/modoboa/lib/python3.10/site-packages (from gevent==22.10.1->modoboa>=1.15.0->modoboa-stats) (5.5.2) Collecting filelock>=3.0.8 Downloading filelock-3.8.2-py3-none-any.whl (10 kB) Collecting requests-file>=1.4 Downloading requests_file-1.5.1-py2.py3-none-any.whl (3.7 kB) Collecting python-dateutil>=2.4.0 Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 KB 3.0 MB/s eta 0:00:00 Requirement already satisfied: sqlparse>=0.2.2 in /data/venv/modoboa/lib/python3.10/site-packages (from Django>=2.2->django-filter==21.1->modoboa-contacts) (0.4.3) Requirement already satisfied: certifi>=2017.4.17 in /data/venv/modoboa/lib/python3.10/site-packages (from requests->caldav==0.9.0->modoboa-contacts) (2022.12.7) Requirement already satisfied: charset-normalizer<3,>=2 in /data/venv/modoboa/lib/python3.10/site-packages (from requests->caldav==0.9.0->modoboa-contacts) (2.1.1) Requirement already satisfied: urllib3<1.27,>=1.21.1 in /data/venv/modoboa/lib/python3.10/site-packages (from requests->caldav==0.9.0->modoboa-contacts) (1.26.13) Requirement already satisfied: cffi>=1.12 in /data/venv/modoboa/lib/python3.10/site-packages (from cryptography->modoboa>=1.15.0->modoboa-stats) (1.15.1) Requirement already satisfied: inflection>=0.3.1 in /data/venv/modoboa/lib/python3.10/site-packages (from drf-spectacular->modoboa>=1.15.0->modoboa-stats) (0.5.1) Requirement already satisfied: PyYAML>=5.1 in /data/venv/modoboa/lib/python3.10/site-packages (from drf-spectacular->modoboa>=1.15.0->modoboa-stats) (6.0) Requirement already satisfied: jsonschema>=2.6.0 in /data/venv/modoboa/lib/python3.10/site-packages (from drf-spectacular->modoboa>=1.15.0->modoboa-stats) (4.17.3) Collecting pytz-deprecation-shim Downloading pytz_deprecation_shim-0.1.0.post0-py2.py3-none-any.whl (15 kB) Requirement already satisfied: pycparser in /data/venv/modoboa/lib/python3.10/site-packages (from cffi>=1.12->cryptography->modoboa>=1.15.0->modoboa-stats) (2.21) Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /data/venv/modoboa/lib/python3.10/site-packages (from jsonschema>=2.6.0->drf-spectacular->modoboa>=1.15.0->modoboa-stats) (0.19.2) Requirement already satisfied: attrs>=17.4.0 in /data/venv/modoboa/lib/python3.10/site-packages (from jsonschema>=2.6.0->drf-spectacular->modoboa>=1.15.0->modoboa-stats) (22.1.0) Collecting tzdata Downloading tzdata-2022.7-py2.py3-none-any.whl (340 kB) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 340.1/340.1 KB 3.5 MB/s eta 0:00:00 Building wheels for collected packages: caldav, vobject Building wheel for caldav (setup.py) ... done Created wheel for caldav: filename=caldav-0.9.0-py3-none-any.whl size=53859 sha256=32a39490e89d504d0723acaa060b385305604552d1d3ea7fb56720853df8c61a Stored in directory: /home/modoboa/.cache/pip/wheels/a4/43/82/dd24bb217d5389c98ba9df599423a5c6a1143d2a642097e793 Building wheel for vobject (setup.py) ... done Created wheel for vobject: filename=vobject-0.9.6.1-py3-none-any.whl size=47683 sha256=3d0cd2d20167f4ed2d694b9e33302187ca2180c7230935ecff4cc39131ae7aa0 Stored in directory: /home/modoboa/.cache/pip/wheels/50/30/da/1b11581351fd0d2c273193d7f615532f95a48dcb717af207de Successfully built caldav vobject Installing collected packages: sievelib, django-webpack-loader, tzdata, reportlab, python-magic, python-dateutil, html2text, filelock, defusedxml, vobject, requests-file, pytz-deprecation-shim, django-filter, tzlocal, tldextract, drf-nested-routers, caldav, modoboa-webmail, modoboa-stats, modoboa-sievefilters, modoboa-radicale, modoboa-postfix-autoreply, modoboa-pdfcredentials, modoboa-imap-migration, modoboa-dmarc, modoboa-contacts, modoboa-amavis Attempting uninstall: django-filter Found existing installation: django-filter 22.1 Uninstalling django-filter-22.1: Successfully uninstalled django-filter-22.1 Successfully installed caldav-0.9.0 defusedxml-0.7.1 django-filter-21.1 django-webpack-loader-0.7.0 drf-nested-routers-0.93.4 filelock-3.8.2 html2text-2020.1.16 modoboa-amavis-1.4.0 modoboa-contacts-0.9.0 modoboa-dmarc-1.3.0 modoboa-imap-migration-1.4.1 modoboa-pdfcredentials-1.5.0 modoboa-postfix-autoreply-1.7.0 modoboa-radicale-1.6.0 modoboa-sievefilters-1.6.0 modoboa-stats-1.5.0 modoboa-webmail-1.7.0 python-dateutil-2.8.2 python-magic-0.4.27 pytz-deprecation-shim-0.1.0.post0 reportlab-3.6.12 requests-file-1.5.1 sievelib-1.2.1 tldextract-3.4.0 tzdata-2022.7 tzlocal-4.2 vobject-0.9.6.1 Traceback (most recent call last): File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3031, in _dep_map return self.__dep_map File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2828, in __getattr__ raise AttributeError(attr) AttributeError: _DistInfoDistribution__dep_map During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3022, in _parsed_pkg_info return self._pkg_info File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2828, in __getattr__ raise AttributeError(attr) AttributeError: _pkg_info. Did you mean: 'egg_info'? During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/data/venv/modoboa/bin/modoboa-admin.py", line 6, in <module> handle_command_line() File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/__init__.py", line 99, in handle_command_line commands[args.command](commands, verbose=args.verbose).run(remaining) File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/__init__.py", line 39, in run self.handle(args) File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/deploy.py", line 223, in handle extra_settings = self.find_extra_settings(extensions) File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/deploy.py", line 168, in find_extra_settings module = __import__(extension[1], locals(), globals(), []) File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa_stats/__init__.py", line 11, in <module> __version__ = get_distribution(__name__).version File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 471, in get_distribution dist = get_provider(dist) File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 347, in get_provider return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0] File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 891, in require needed = self.resolve(parse_requirements(requirements)) File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 785, in resolve new_requirements = dist.requires(req.extras)[::-1] File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2749, in requires dm = self._dep_map File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3033, in _dep_map self.__dep_map = self._compute_dependencies() File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3042, in _compute_dependencies for req in self._parsed_pkg_info.get_all('Requires-Dist') or []: File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3024, in _parsed_pkg_info metadata = self.get_metadata(self.PKG_INFO) File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 1412, in get_metadata value = self._get(path) File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 1616, in _get with open(path, 'rb') as stream: FileNotFoundError: [Errno 2] No such file or directory: '/data/venv/modoboa/lib/python3.10/site-packages/django_filter-22.1.dist-info/METADATA' ``` Do diagnose: ``` (modoboa) modoboa@mybox:/data/www$ pip freeze aioredis==2.0.1 aiosmtplib==2.0.0 asgiref==3.5.2 async-timeout==4.0.2 attrs==22.1.0 bcrypt==4.0.1 caldav==0.9.0 certifi==2022.12.7 cffi==1.15.1 chardet==5.1.0 charset-normalizer==2.1.1 cryptography==38.0.4 defusedxml==0.7.1 dj-database-url==1.0.0 Django==3.2.16 django-ckeditor==6.3.0 django-filter==21.1 django-js-asset==2.0.0 django-otp==1.1.3 django-phonenumber-field==7.0.0 django-reversion==5.0.3 django-webpack-loader==0.7.0 django-xforwardedfor-middleware==2.0 djangorestframework==3.14.0 djangorestframework-simplejwt==5.2.2 dnspython==2.2.1 drf-nested-routers==0.93.4 drf-spectacular==0.24.2 feedparser==6.0.10 filelock==3.8.2 gevent==22.10.1 greenlet==1.1.3.post0 html2text==2020.1.16 idna==3.4 inflection==0.5.1 jsonfield==3.1.0 jsonschema==4.17.3 lxml==4.9.1 modoboa==2.0.3 modoboa-amavis==1.4.0 modoboa-contacts==0.9.0 modoboa-dmarc==1.3.0 modoboa-imap-migration==1.4.1 modoboa-pdfcredentials==1.5.0 modoboa-postfix-autoreply==1.7.0 modoboa-radicale==1.6.0 modoboa-sievefilters==1.6.0 modoboa-stats==1.5.0 modoboa-webmail==1.7.0 oath==1.4.4 ovh==1.0.0 passlib==1.7.4 phonenumbers==8.13.2 Pillow==9.3.0 progressbar33==2.4 psycopg2==2.9.5 py-dateutil==2.2 pycparser==2.21 PyJWT==2.6.0 pyrsistent==0.19.2 python-dateutil==2.8.2 python-magic==0.4.27 pytz==2022.6 pytz-deprecation-shim==0.1.0.post0 PyYAML==6.0 qrcode==7.3.1 redis==4.4.0 reportlab==3.6.12 requests==2.28.1 requests-file==1.5.1 rrdtool==0.1.16 sgmllib3k==1.0.0 sievelib==1.2.1 six==1.16.0 sqlparse==0.4.3 tldextract==3.4.0 typing_extensions==4.4.0 tzdata==2022.7 tzlocal==4.2 uritemplate==4.1.1 urllib3==1.26.13 vobject==0.9.6.1 zope.event==4.5.0 zope.interface==5.5.2 ``` Note: 1. django-filter==21.1 is installed 2. `modoboa-admin.py deploy` "Found existing installation: django-filter 22.1" and tried to unsintall it and unsurprisingly bombed because it isn't installed, 21.1 is and the file `/data/venv/modoboa/lib/python3.10/site-packages/django_filter-22.1.dist-info/METADATA' does indeed not exist, but this one does: `/data/venv/modoboa/lib/python3.10/site-packages/django_filter-2`.1.dist-info/METADATA' # Expected behavior That modoboa-admin.py doesn't see django-filter 22.1 installed when it isn't and does see django-filter 21.1 when it is. To be honest that's one creative bug, I have no idea how it can happen. Will in due course drill into the scripts at see (assuming it reproduces when I empty the venv, and start from start again) but for now, figured it best to report.
kerem 2026-02-27 11:18:32 +03:00
  • closed this issue
  • added the
    bug
    label
Author
Owner

@bernd-wechner commented on GitHub (Dec 11, 2022):

Update: on a clean venv, pip install wheel modoboa psycopg2 followed by:

(modoboa) modoboa@mybox:/data/www$ pip freeze
aioredis==2.0.1
aiosmtplib==2.0.0
asgiref==3.5.2
async-timeout==4.0.2
attrs==22.1.0
bcrypt==4.0.1
certifi==2022.12.7
cffi==1.15.1
chardet==5.1.0
charset-normalizer==2.1.1
cryptography==38.0.4
dj-database-url==1.0.0
Django==3.2.16
django-ckeditor==6.3.0
django-filter==22.1
django-js-asset==2.0.0
django-otp==1.1.3
django-phonenumber-field==7.0.0
django-reversion==5.0.3
django-xforwardedfor-middleware==2.0
djangorestframework==3.14.0
djangorestframework-simplejwt==5.2.2
dnspython==2.2.1
drf-spectacular==0.24.2
feedparser==6.0.10
gevent==22.10.1
greenlet==1.1.3.post0
idna==3.4
inflection==0.5.1
jsonfield==3.1.0
jsonschema==4.17.3
lxml==4.9.1
modoboa==2.0.3
oath==1.4.4
ovh==1.0.0
passlib==1.7.4
phonenumbers==8.13.2
Pillow==9.3.0
progressbar33==2.4
psycopg2==2.9.5
py-dateutil==2.2
pycparser==2.21
PyJWT==2.6.0
pyrsistent==0.19.2
pytz==2022.6
PyYAML==6.0
qrcode==7.3.1
redis==4.4.0
requests==2.28.1
rrdtool==0.1.16
sgmllib3k==1.0.0
six==1.16.0
sqlparse==0.4.3
typing_extensions==4.4.0
uritemplate==4.1.1
urllib3==1.26.13
zope.event==4.5.0
zope.interface==5.5.2

We see modoboa installs django_filter 22.1 by default.

Trying the deploy again the issue reproduces. It seems in the deploy, there is first:

Collecting django-filter==21.1
  Using cached django_filter-21.1-py3-none-any.whl (81 kB)

followed later by:

  Attempting uninstall: django-filter
    Found existing installation: django-filter 22.1
    Uninstalling django-filter-22.1:
      Successfully uninstalled django-filter-22.1

followed by the crash:

Traceback (most recent call last):
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3031, in _dep_map
    return self.__dep_map
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2828, in __getattr__
    raise AttributeError(attr)
AttributeError: _DistInfoDistribution__dep_map

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3022, in _parsed_pkg_info
    return self._pkg_info
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2828, in __getattr__
    raise AttributeError(attr)
AttributeError: _pkg_info. Did you mean: 'egg_info'?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/data/venv/modoboa/bin/modoboa-admin.py", line 6, in <module>
    handle_command_line()
  File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/__init__.py", line 99, in handle_command_line
    commands[args.command](commands, verbose=args.verbose).run(remaining)
  File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/__init__.py", line 39, in run
    self.handle(args)
  File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/deploy.py", line 223, in handle
    extra_settings = self.find_extra_settings(extensions)
  File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/deploy.py", line 168, in find_extra_settings
    module = __import__(extension[1], locals(), globals(), [])
  File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa_stats/__init__.py", line 11, in <module>
    __version__ = get_distribution(__name__).version
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 471, in get_distribution
    dist = get_provider(dist)
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 347, in get_provider
    return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0]
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 891, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 785, in resolve
    new_requirements = dist.requires(req.extras)[::-1]
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2749, in requires
    dm = self._dep_map
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3033, in _dep_map
    self.__dep_map = self._compute_dependencies()
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3042, in _compute_dependencies
    for req in self._parsed_pkg_info.get_all('Requires-Dist') or []:
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3024, in _parsed_pkg_info
    metadata = self.get_metadata(self.PKG_INFO)
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 1412, in get_metadata
    value = self._get(path)
  File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 1616, in _get
    with open(path, 'rb') as stream:
FileNotFoundError: [Errno 2] No such file or directory: '/data/venv/modoboa/lib/python3.10/site-packages/django_filter-22.1.dist-info/METADATA'
<!-- gh-comment-id:1345481436 --> @bernd-wechner commented on GitHub (Dec 11, 2022): Update: on a clean venv, `pip install wheel modoboa psycopg2` followed by: ``` (modoboa) modoboa@mybox:/data/www$ pip freeze aioredis==2.0.1 aiosmtplib==2.0.0 asgiref==3.5.2 async-timeout==4.0.2 attrs==22.1.0 bcrypt==4.0.1 certifi==2022.12.7 cffi==1.15.1 chardet==5.1.0 charset-normalizer==2.1.1 cryptography==38.0.4 dj-database-url==1.0.0 Django==3.2.16 django-ckeditor==6.3.0 django-filter==22.1 django-js-asset==2.0.0 django-otp==1.1.3 django-phonenumber-field==7.0.0 django-reversion==5.0.3 django-xforwardedfor-middleware==2.0 djangorestframework==3.14.0 djangorestframework-simplejwt==5.2.2 dnspython==2.2.1 drf-spectacular==0.24.2 feedparser==6.0.10 gevent==22.10.1 greenlet==1.1.3.post0 idna==3.4 inflection==0.5.1 jsonfield==3.1.0 jsonschema==4.17.3 lxml==4.9.1 modoboa==2.0.3 oath==1.4.4 ovh==1.0.0 passlib==1.7.4 phonenumbers==8.13.2 Pillow==9.3.0 progressbar33==2.4 psycopg2==2.9.5 py-dateutil==2.2 pycparser==2.21 PyJWT==2.6.0 pyrsistent==0.19.2 pytz==2022.6 PyYAML==6.0 qrcode==7.3.1 redis==4.4.0 requests==2.28.1 rrdtool==0.1.16 sgmllib3k==1.0.0 six==1.16.0 sqlparse==0.4.3 typing_extensions==4.4.0 uritemplate==4.1.1 urllib3==1.26.13 zope.event==4.5.0 zope.interface==5.5.2 ``` We see modoboa installs django_filter 22.1 by default. Trying the deploy again the issue reproduces. It seems in the deploy, there is first: ``` Collecting django-filter==21.1 Using cached django_filter-21.1-py3-none-any.whl (81 kB) ``` followed later by: ``` Attempting uninstall: django-filter Found existing installation: django-filter 22.1 Uninstalling django-filter-22.1: Successfully uninstalled django-filter-22.1 ``` followed by the crash: ``` Traceback (most recent call last): File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3031, in _dep_map return self.__dep_map File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2828, in __getattr__ raise AttributeError(attr) AttributeError: _DistInfoDistribution__dep_map During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3022, in _parsed_pkg_info return self._pkg_info File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2828, in __getattr__ raise AttributeError(attr) AttributeError: _pkg_info. Did you mean: 'egg_info'? During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/data/venv/modoboa/bin/modoboa-admin.py", line 6, in <module> handle_command_line() File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/__init__.py", line 99, in handle_command_line commands[args.command](commands, verbose=args.verbose).run(remaining) File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/__init__.py", line 39, in run self.handle(args) File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/deploy.py", line 223, in handle extra_settings = self.find_extra_settings(extensions) File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa/core/commands/deploy.py", line 168, in find_extra_settings module = __import__(extension[1], locals(), globals(), []) File "/data/venv/modoboa/lib/python3.10/site-packages/modoboa_stats/__init__.py", line 11, in <module> __version__ = get_distribution(__name__).version File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 471, in get_distribution dist = get_provider(dist) File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 347, in get_provider return working_set.find(moduleOrReq) or require(str(moduleOrReq))[0] File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 891, in require needed = self.resolve(parse_requirements(requirements)) File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 785, in resolve new_requirements = dist.requires(req.extras)[::-1] File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 2749, in requires dm = self._dep_map File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3033, in _dep_map self.__dep_map = self._compute_dependencies() File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3042, in _compute_dependencies for req in self._parsed_pkg_info.get_all('Requires-Dist') or []: File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 3024, in _parsed_pkg_info metadata = self.get_metadata(self.PKG_INFO) File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 1412, in get_metadata value = self._get(path) File "/data/venv/modoboa/lib/python3.10/site-packages/pkg_resources/__init__.py", line 1616, in _get with open(path, 'rb') as stream: FileNotFoundError: [Errno 2] No such file or directory: '/data/venv/modoboa/lib/python3.10/site-packages/django_filter-22.1.dist-info/METADATA' ```
Author
Owner

@bernd-wechner commented on GitHub (Dec 11, 2022):

Figuring it was a bug in an extension, dropped --extensions all and it completed without crash. Confirming it's in one of the extensions.

<!-- gh-comment-id:1345482026 --> @bernd-wechner commented on GitHub (Dec 11, 2022): Figuring it was a bug in an extension, dropped `--extensions all` and it completed without crash. Confirming it's in one of the extensions.
Author
Owner

@tonioo commented on GitHub (Dec 14, 2022):

@bernd-wechner Have you tried to upgrade pip ?

<!-- gh-comment-id:1350698162 --> @tonioo commented on GitHub (Dec 14, 2022): @bernd-wechner Have you tried to upgrade pip ?
Author
Owner

@bernd-wechner commented on GitHub (Dec 14, 2022):

Always use the latest version yes. Can double check but reflexively update pip when it asks me to, which it does with tedious frequency.

<!-- gh-comment-id:1350727161 --> @bernd-wechner commented on GitHub (Dec 14, 2022): Always use the latest version yes. Can double check but reflexively update pip when it asks me to, which it does with tedious frequency.
Author
Owner

@bernd-wechner commented on GitHub (Dec 21, 2022):

$ pip --version
pip 22.0.2 from /data/venv/modoboa/lib/python3.10/site-packages/pip (python 3.10)

<!-- gh-comment-id:1360963806 --> @bernd-wechner commented on GitHub (Dec 21, 2022): $ pip --version pip 22.0.2 from /data/venv/modoboa/lib/python3.10/site-packages/pip (python 3.10)
Author
Owner

@tonioo commented on GitHub (Feb 15, 2023):

I think this issue should be solved now. It was due to a dependency conflict between calendar and contacts plugins.

<!-- gh-comment-id:1431752787 --> @tonioo commented on GitHub (Feb 15, 2023): I think this issue should be solved now. It was due to a dependency conflict between calendar and contacts plugins.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/modoboa-modoboa#1681
No description provided.