I installed 3.9 with pip last week, but i want to upgrade to 3.10. But pip install -U mailman postorius django-mailman3 hyperkitty mailman-web doesn't upgrade it.
Requirement already satisfied: mailman in ./venv/lib/python3.13/site-packages (3.3.9) Collecting mailman Using cached mailman-3.3.10-py3-none-any.whl.metadata (2.4 kB) Requirement already satisfied: postorius in ./venv/lib/python3.13/site-packages (1.3.13) ... a bunch of these ... INFO: pip is looking at multiple versions of mailman to determine which version is compatible with other requirements. This could take a while. Requirement already satisfied: python-dateutil>=2.0 in ./venv/lib/python3.13/site-packages (from mailman) (2.9.0.post0) ...a bunch more...
-- Paul Tomblin
On 3/2/26 18:21, Paul Tomblin via Mailman-users wrote:
I installed 3.9 with pip last week, but i want to upgrade to 3.10. But pip install -U mailman postorius django-mailman3 hyperkitty mailman-web doesn't upgrade it.
Mailman core 3.3.10 was released to PyPI in October 2024 at any time
thereafter pip install mailman should have installed Mailman 3.3.10.
Requirement already satisfied: mailman in ./venv/lib/python3.13/site-packages (3.3.9)
I don't know why 3.3.9 would have been installed at all.
Collecting mailman Using cached mailman-3.3.10-py3-none-any.whl.metadata (2.4 kB)
But it looks like here it's trying to install 3.3.10.
Requirement already satisfied: postorius in ./venv/lib/python3.13/site-packages (1.3.13) ... a bunch of these ... INFO: pip is looking at multiple versions of mailman to determine which version is compatible with other requirements. This could take a while. Requirement already satisfied: python-dateutil>=2.0 in ./venv/lib/python3.13/site-packages (from mailman) (2.9.0.post0) ...a bunch more...
Is there any conflict reported in this bunch more to force 3.3.9? What
if you do pip install mailman==3.3.10?
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
On Tue, Mar 3, 2026, at 12:30 AM, Mark Sapiro wrote:
But it looks like here it's trying to install 3.3.10.
Requirement already satisfied: postorius in ./venv/lib/python3.13/site-packages (1.3.13) ... a bunch of these ... INFO: pip is looking at multiple versions of mailman to determine which version is compatible with other requirements. This could take a while. Requirement already satisfied: python-dateutil>=2.0 in ./venv/lib/python3.13/site-packages (from mailman) (2.9.0.post0) ...a bunch more...
Is there any conflict reported in this
bunch moreto force 3.3.9? What if you dopip install mailman==3.3.10?
All the "...a bunch more..." lines are "Requirement already satisfied".
And here's what happens when I try to do as you suggested: (venv) $ pip install mailman==3.3.10 Collecting mailman==3.3.10 Using cached mailman-3.3.10-py3-none-any.whl.metadata (2.4 kB) Requirement already satisfied: aiosmtpd>=1.4.3 in ./venv/lib/python3.13/site-packages (from mailman==3.3.10) (1.4.6) Requirement already satisfied: alembic!=1.7.0,>=1.6.2 in ./venv/lib/python3.13/site-packages (from mailman==3.3.10) (1.18.4) Requirement already satisfied: atpublic in ./venv/lib/python3.13/site-packages (from mailman==3.3.10) (7.0.0) Requirement already satisfied: authheaders>=0.16 in ./venv/lib/python3.13/site-packages (from mailman==3.3.10) (0.16.3) Requirement already satisfied: authres>=1.0.1 in ./venv/lib/python3.13/site-packages (from mailman==3.3.10) (1.2.0) Requirement already satisfied: click>=8.0.0 in ./venv/lib/python3.13/site-packages (from mailman==3.3.10) (8.3.1) Requirement already satisfied: dnspython>=1.14.0 in ./venv/lib/python3.13/site-packages (from mailman==3.3.10) (2.8.0) Requirement already satisfied: falcon>=3.1.3 in ./venv/lib/python3.13/site-packages (from mailman==3.3.10) (4.2.0) Requirement already satisfied: flufl.bounce>=4.0 in ./venv/lib/python3.13/site-packages (from mailman==3.3.10) (4.0) Requirement already satisfied: flufl.i18n>=3.2 in ./venv/lib/python3.13/site-packages (from mailman==3.3.10) (6.0.0) Requirement already satisfied: flufl.lock>=5.1 in ./venv/lib/python3.13/site-packages (from mailman==3.3.10) (9.0.0) Requirement already satisfied: gunicorn in ./venv/lib/python3.13/site-packages (from mailman==3.3.10) (25.1.0) Requirement already satisfied: lazr.config in ./venv/lib/python3.13/site-packages (from mailman==3.3.10) (3.1) INFO: pip is looking at multiple versions of mailman to determine which version is compatible with other requirements. This could take a while. ERROR: Could not find a version that satisfies the requirement nntplib; python_version >= "3.13" (from mailman) (from versions: none) ERROR: No matching distribution found for nntplib; python_version >= "3.13"
I guess I need to upgrade my python version?
-- Paul Tomblin
On 3/3/26 12:24, Paul Tomblin via Mailman-users wrote:
ERROR: Could not find a version that satisfies the requirement nntplib; python_version >= "3.13" (from mailman) (from versions: none) ERROR: No matching distribution found for nntplib; python_version >= "3.13"
I guess I need to upgrade my python version?
At
<https://gitlab.com/mailman/mailman/-/blob/master/pyproject.toml?ref_type=hea...>
we require standard-nntplib if the python version is >= 3.13. However
in Mailman 3.3.10 this line erroneously required nntplib rather than
standard-nntplib. Thus the failure.
I have noted before there are incompatibilities between Mailman <= 3.3.10 and Python 3.13. This is one of them. You could downgrade your Python to 3.12, but I recommend installing Mailman core from gitlab with
pip install git+https://gitlab.com/mailman/mailman@master
That version is compatible with Python 3.13.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
On Tue, Mar 3, 2026, at 4:31 PM, Mark Sapiro wrote:
pip install git+https://gitlab.com/mailman/mailman@master
That version is compatible with Python 3.13.
Ok, that works. Now what do I need to do to get base_url and the dependent template text variables set? Is it just the same with mailman-web@master ?
-- Paul Tomblin
On 3/4/26 16:11, Paul Tomblin via Mailman-users wrote:
On Tue, Mar 3, 2026, at 4:31 PM, Mark Sapiro wrote:
pip install git+https://gitlab.com/mailman/mailman@master
That version is compatible with Python 3.13.Ok, that works. Now what do I need to do to get base_url and the dependent template text variables set? Is it just the same with mailman-web@master ?
Updating mailman-web from gitlab won't do it because you need to update postorius and mailman-client from gitlab and an update of mailman-web will pull those from PyPI.
You need to do
pip install git+https://gitlab.com/mailman/mailman-client@master
pip install git+https://gitlab.com/mailman/postorius@master
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
On Wed, Mar 4, 2026, at 8:17 PM, Mark Sapiro wrote:
pip install git+https://gitlab.com/mailman/mailman@master
pip install git+https://gitlab.com/mailman/mailman-client@master
This one is asking for a userid and password. I signed into gitlab with my github sign in, and that userid and password don’t work. I created an auth token on gitlab, and that didn’t work either.
-- Paul Tomblin
On 3/7/26 08:45, Paul Tomblin via Mailman-users wrote:
pip install git+https://gitlab.com/mailman/mailman-client@master
This one is asking for a userid and password. I signed into gitlab with my github sign in, and that userid and password don’t work. I created an auth token on gitlab, and that didn’t work either.
Sorry, that should be
pip install git+https://gitlab.com/mailman/mailmanclient@master
without the hyphen.
Also, I didn't explicitly say before but I think you also need to do
pip install git+https://gitlab.com/mailman/mailman-web@master
to pick up changes to mailman_web/settings/mailman.py
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
On Sat, Mar 7, 2026, at 3:05 PM, Mark Sapiro wrote:
pip install git+https://gitlab.com/mailman/mailmanclient@master
without the hyphen.
Also, I didn't explicitly say before but I think you also need to do
pip install git+https://gitlab.com/mailman/mailman-web@master
to pick up changes to mailman_web/settings/mailman.py
Ok, I've done those, and the migrate, compress, collectstatic. Where does base_url get set?
My list footer still has an unconverted ${mailinglist_url}
This is the pt-test mailing list Description: Personal test message list To modify your subscription, go to ${mailinglist_url} Your email is ptomblin@xcski.com
-- Paul Tomblin
On 3/7/26 17:02, Paul Tomblin via Mailman-users wrote:
Ok, I've done those, and the migrate, compress, collectstatic. Where does base_url get set?
base_url is an attribute of the domain and can be set in Postorius in the domains view.
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
On Sat, Mar 7, 2026, at 8:09 PM, Mark Sapiro wrote:
On 3/7/26 17:02, Paul Tomblin via Mailman-users wrote:
Ok, I've done those, and the migrate, compress, collectstatic. Where does base_url get set?
base_url is an attribute of the domain and can be set in Postorius in the domains view.
I’m not seeing it.
-- Paul Tomblin
On Sat, Mar 7, 2026, at 11:08 PM, Mark Sapiro wrote:
On 3/7/26 17:14, Paul Tomblin via Mailman-users wrote:
I’m not seeing it.
Are you looking at <https://your.domain/mailman3/domains/>
Do you have the latest Postorius from GitLab?
I missed that step at first, but now I've done it, I see no change. It still says version 1.3.13, and the Edit Domain page still just has Description, Alias Domain, and Web Host.
When I was installing it, it said it was this commit: Resolved https://gitlab.com/mailman/postorius to commit 2c0c3aeb905c82ee4d6724897b89def71c02c1ef which does appear to be the latest.
Sorry to be taking so much of your time, but I really want to make the footer for my neighborhood association lists as much like the old ones as possible.
-- Paul Tomblin
On 3/8/26 10:25, Paul Tomblin via Mailman-users wrote:
On Sat, Mar 7, 2026, at 11:08 PM, Mark Sapiro wrote:
Do you have the latest Postorius from GitLab?
I missed that step at first, but now I've done it, I see no change. It still says version 1.3.13, and the Edit Domain page still just has Description, Alias Domain, and Web Host.
When I was installing it, it said it was this commit: Resolved https://gitlab.com/mailman/postorius to commit 2c0c3aeb905c82ee4d6724897b89def71c02c1ef which does appear to be the latest.
That should be good. It will say 1.3.13 as the version hasn't been updated in GitLab.
Is an old page cached somewhere? Have you tried clearing browser cache or a different browser or depending on browser and platform ctrl+reload or shift+reload.
Does your /opt/mailman/venv/lib/py<version>/site-packages/postorius/forms/domain_forms.py match <https://gitlab.com/mailman/postorius/-/blob/master/src/postorius/forms/domain_forms.py?ref_type=heads#L66>?
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
On Sun, Mar 8, 2026, at 6:37 PM, Mark Sapiro wrote:
Does your /opt/mailman/venv/lib/py<version>/site-packages/postorius/forms/domain_forms.py match <https://gitlab.com/mailman/postorius/-/blob/master/src/postorius/forms/domain_forms.py?ref_type=heads#L66>?
No, it doesn't have the base_url field. Well, that' solves one mystery and gives me another. Why didn't pip update it? Could it be because the version number isn't incremented?
What would happen if I just git cloned that repo into a local directory and copied it over?
-- Paul Tomblin
On 3/8/26 15:48, Paul Tomblin via Mailman-users wrote:
No, it doesn't have the base_url field. Well, that' solves one mystery and gives me another. Why didn't pip update it? Could it be because the version number isn't incremented?
No, it's not the version number. Did you run the pip install command
with your venv active? If not, pip installed it somewhere other than in
your venv.
What would happen if I just git cloned that repo into a local directory and copied it over?
You could do that, but better after cloning the repo you could do (with
your venv active) pip install path/to/cloned/repo
but first you should ensure you actually installed all the GitLab heads for mailman, mailmanclient, postorius and mailman-web in your venv.
If with your venv active you do pip freeze you should see those things
as items similar to
mailman @ git+https://gitlab.com/mailman/mailman@... mailmanclient @ git+https://gitlab.com/mailman/mailmanclient@... mailman-web @ git+https://gitlab.com/mailman/mailman-web@... postorius @ git+https://gitlab.com/mailman/postorius@...
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
On Sun, Mar 8, 2026, at 10:56 PM, Mark Sapiro wrote:
Actually I think the issue is because of the version not being bumped
When I did pip with a file path, it looks like it did uninstall and reinstall
Building wheels for collected packages: postorius Building wheel for postorius (pyproject.toml) ... done Created wheel for postorius: filename=postorius-1.3.13-py3-none-any.whl size=3844417 sha256=b0ca99e0c77a2fd3a7460a38d5e917855170432610e123f6cbe03f1ab054888d Stored in directory: /tmp/pip-ephem-wheel-cache-nz_847ds/wheels/58/f2/fa/13dfd8d8589c1b34506c170121d1cc3ab9245e2a684d0be026 Successfully built postorius Installing collected packages: postorius Attempting uninstall: postorius Found existing installation: postorius 1.3.13 Uninstalling postorius-1.3.13: Successfully uninstalled postorius-1.3.13 Successfully installed postorius-1.3.13
Looks like I've got base_url working! Thanks very much.
As a feature request, could we get the unsubscribe email address as a template variable? Maybe I should dust off my python skills and submit a pull request. Do I need a gitlab account to do that?
-- Paul Tomblin
On 3/8/26 20:08, Paul Tomblin via Mailman-users wrote:
As a feature request, could we get the unsubscribe email address as a template variable? Maybe I should dust off my python skills and submit a pull request. Do I need a gitlab account to do that?
You don't need a special variable for that. Look at the footer in this list post. It contains
To unsubscribe send an email to mailman-users-leave@mailman3.org
That is produced from
To unsubscribe send an email to ${short_listname}-leave@${domain}
-- Mark Sapiro <mark@msapiro.net> The highway is for gamblers, San Francisco Bay Area, California better use your sense - B. Dylan
participants (2)
-
Mark Sapiro -
Paul Tomblin