 
            On 10/25/2025 2:54 AM, Stephen J. Turnbull wrote:
Dennis Putnam via Mailman-users writes:
$ ls /opt/mailman/venv/lib/python3.12/site-packages/gunicorn app debug.py http __main__.py reloader.py util.py arbiter.py errors.py __init__.py pidfile.py sock.py workers config.py glogging.py instrument __pycache__ systemd.py
That looks OK. Are all the files readable by the mailman user? *Yes*
Is it possible that mailman-web was installed somewhere other than that virtual environment? *Not that I can find.*
Do I need to specify a path somewhere?
Not if you follow this procedure (note: assumes venv already exists and Mailman core was installed into the venv):
- cd /opt/mailman
- sudo su mailman # or somehow be the mailman user
- . venv/bin/activate
- python -m pip install mailmanweb # maybe that's mailman-web *Yes, it is mailman-web. In any case everything is satisfied.*
The point of activating the venv is that the installation process will ensure that the Python installation in the venv is referenced by all packages installed in the venv.
You should ensure that all of the executable paths in the systemd mailman (or mailman3) and mailman-web unit files are absolute paths pointing into the venv. *This looks right to me but nothing points to /opt/mailman/venv/lib. Should there be a lib_dir parameter set in mailman.cfg?
[Unit] Description=GNU Mailing List Manager After=syslog.target network.target
[Service] Type=forking PIDFile=/opt/mailman/mm/var/master.pid User=mailman Group=mailman Environment="MAILMAN_CONFIG_FILE=/etc/mailman3/mailman.cfg" ExecStart=/opt/mailman/venv/bin/mailman start ExecReload=/opt/mailman/venv/bin/mailman restart ExecStop=/opt/mailman/venv/bin/mailman stop Restart=on-failure RestartSec=15
[Install] WantedBy=multi-user.target*
*I think the main thing is the MySQL stuff in settings.py:
<venv> pip install pymysql
Add lines:
import pymysql pymysql.install_as_MySQLdb()
At least so far.*
Thank you! That's useful.
Steve
Mailman's content filtering has removed the following MIME parts from this message.
Replaced multipart/alternative part with first alternative.