@nevj :
Hi Neville, 
I didn´t have time to try out the python script myself yesterday, so I just threw it at you. Sorry.
Today I ran into the same problem:
pip install python-dateutil orthodox
Requirement already satisfied: python-dateutil in ./venv/lib/python3.10/site-packages (2.9.0.post0)
ERROR: Could not find a version that satisfies the requirement orthodox (from versions: none)
ERROR: No matching distribution found for orthodox
…means that pip can’t find a package named orthodox on PyPI (Python’s official package index).
There is no official package just called orthodox.
The script I was using assumes a package or module that might have been available in some environments or forks, but there is no widely published orthodox package on PyPI. That explains why I couldn´t install it even in my virtual environment.
BTW: I was working with a firejailed instance of Jupyter Lab. 
Yet I could replace the missing orthodox_easter function with one that I included directly in the script (no installation needed).
Here’s an updated version of the script that includes the calculation for Orthodox Easter, based on the Julian calendar:
from dateutil.easter import easter
import datetime
def orthodox_easter(year):
# Julian calendar Easter (Orthodox)
a = year % 4
b = year % 7
c = year % 19
d = (19 * c + 15) % 30
e = (2 * a + 4 * b - d + 34) % 7
month = (d + e + 114) // 31
day = ((d + e + 114) % 31) + 1
# Convert Julian to Gregorian calendar (difference is 13 days in 20th–21st centuries)
julian_date = datetime.date(year, month, day)
gregorian_date = julian_date + datetime.timedelta(days=13)
return gregorian_date
start_year = 2025
end_year = 2100
print("Years when Western and Orthodox Easter fall on the same date:\n")
for year in range(start_year, end_year + 1):
western = easter(year)
orthodox = orthodox_easter(year)
if western == orthodox:
print(f"{year}: Easter = {western.strftime('%d/%m/%Y')}")
Works like a charm now. 
Here´s its output:
Years when Western and Orthodox Easter fall on the same date:
2025: Easter = 20/04/2025
2028: Easter = 16/04/2028
2031: Easter = 13/04/2031
2034: Easter = 09/04/2034
2037: Easter = 05/04/2037
2038: Easter = 25/04/2038
2041: Easter = 21/04/2041
2045: Easter = 09/04/2045
2048: Easter = 05/04/2048
2052: Easter = 21/04/2052
2055: Easter = 18/04/2055
2058: Easter = 14/04/2058
2061: Easter = 10/04/2061
2069: Easter = 14/04/2069
2071: Easter = 19/04/2071
2072: Easter = 10/04/2072
2075: Easter = 07/04/2075
2079: Easter = 23/04/2079
2082: Easter = 19/04/2082
2085: Easter = 15/04/2085
2091: Easter = 08/04/2091
2095: Easter = 24/04/2095
2096: Easter = 15/04/2096
2099: Easter = 12/04/2099
As for the math part def orthodox_easter(year):
This is a special calculation based on the Julian calendar, which is still used by Orthodox churches for Easter.
a = year % 4
b = year % 7
c = year % 19
These are just remainders when dividing the year by 4, 7, and 19 — that’s used to compute moon phases and weekday alignment.
d = (19 * c + 15) % 30
e = (2 * a + 4 * b - d + 34) % 7
These two values help determine when the full moon and Sunday line up. Again, no need to memorize this; it’s part of a traditional algorithm.
month = (d + e + 114) // 31
day = ((d + e + 114) % 31) + 1
Now that the earlier values have been calculated, this figures out the month and day of Easter Sunday on the Julian calendar. (Hint: it’s always in March or April.)
julian_date = datetime.date(year, month, day)
gregorian_date = julian_date + datetime.timedelta(days=13)
Because the Julian calendar is currently 13 days behind the Gregorian calendar, we just add 13 days to get the modern/Western equivalent.
This, of course, I came up with only by consulting ChatGPT.
I´m no math genius. 
To sum up:
- The algorithm figures out the date of Orthodox Easter using astronomical cycles.
- It’s based on old church math (a mix of lunar cycles and Sunday rules).
- Using it like a tool — no need to reinvent it. Think of it like a recipe from a cookbook!
Many greetings from Rosika 