Closed simonprickett closed 10 months ago
I've been able to reproduce this with Python 3.12.0rc2 which is what's available via pyenv at the moment.
(venv) redisu $ python utils/dumpload.py load ru101/data/ru101.json
Traceback (most recent call last):
File "/Users/simonprickett/source/github/ru101/redisu/utils/dumpload.py", line 8, in <module>
from redis import StrictRedis
File "/Users/simonprickett/source/github/ru101/venv/lib/python3.12/site-packages/redis/__init__.py", line 1, in <module>
from redis.client import Redis, StrictRedis
File "/Users/simonprickett/source/github/ru101/venv/lib/python3.12/site-packages/redis/client.py", line 12, in <module>
from redis.connection import (ConnectionPool, UnixDomainSocketConnection,
File "/Users/simonprickett/source/github/ru101/venv/lib/python3.12/site-packages/redis/connection.py", line 2, in <module>
from distutils.version import StrictVersion
ModuleNotFoundError: No module named 'distutils'
(venv) redisu $ python --version
Python 3.12.0rc2
Fixed this by moving to redis-py 5.0.1 in requirements.txt
.
I'm moving this to redis-py 5.0.1 which will fix this issue. It does introduce some deprecation warnings that I'll fix at the same time. Example (I'll log all of these as I test each course script):
(venv) redisu $ python utils/dumpload.py load ru101/data/ru101.json
/Users/simonprickett/source/github/ru101/redisu/utils/dumpload.py:76: DeprecationWarning: Pipeline.hmset() is deprecated. Use Pipeline.hset() instead.
p.hmset(obj['k'], obj['v'])
total keys loaded: 14328
Fixed this one.
Found an issue with the uc02
script inventory.py
.
Same issue in uc03
script seat_reservation.py
and uc04
notify.py
and uc06
inventory-lua.py
.
(venv) uc02-inventory-control $ python inventory.py
Traceback (most recent call last):
File "/Users/simonprickett/source/github/ru101/redisu/ru101/uc02-inventory-control/inventory.py", line 8, in <module>
import redisu.ru101.common.generate as generate
File "/Users/simonprickett/source/github/ru101/redisu/ru101/common/generate.py", line 2, in <module>
from faker import Faker
File "/Users/simonprickett/source/github/ru101/venv/lib/python3.12/site-packages/faker/__init__.py", line 1, in <module>
from faker.factory import Factory # noqa F401
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/simonprickett/source/github/ru101/venv/lib/python3.12/site-packages/faker/factory.py", line 7, in <module>
from faker.config import AVAILABLE_LOCALES, DEFAULT_LOCALE, PROVIDERS
File "/Users/simonprickett/source/github/ru101/venv/lib/python3.12/site-packages/faker/config.py", line 14, in <module>
AVAILABLE_LOCALES = find_available_locales(PROVIDERS)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/simonprickett/source/github/ru101/venv/lib/python3.12/site-packages/faker/utils/loading.py", line 45, in find_available_locales
provider_module = import_module(provider_path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/simonprickett/.pyenv/versions/3.12.0rc2/lib/python3.12/importlib/__init__.py", line 90, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/simonprickett/source/github/ru101/venv/lib/python3.12/site-packages/faker/providers/address/__init__.py", line 1, in <module>
from .. import BaseProvider, date_time
File "/Users/simonprickett/source/github/ru101/venv/lib/python3.12/site-packages/faker/providers/date_time/__init__.py", line 7, in <module>
from dateutil.tz import gettz, tzlocal, tzutc
File "/Users/simonprickett/source/github/ru101/venv/lib/python3.12/site-packages/dateutil/tz/__init__.py", line 2, in <module>
from .tz import *
File "/Users/simonprickett/source/github/ru101/venv/lib/python3.12/site-packages/dateutil/tz/tz.py", line 21, in <module>
from six.moves import _thread
ModuleNotFoundError: No module named 'six.moves'
Found an issue with uc05
where the GEOADD
signature has changed:
(venv) uc05-finding-venues $ python finding_venues.py
==Test 1 - geo searches around a venue
Traceback (most recent call last):
File "/Users/simonprickett/source/github/ru101/redisu/ru101/uc05-finding-venues/finding_venues.py", line 163, in <module>
main()
File "/Users/simonprickett/source/github/ru101/redisu/ru101/uc05-finding-venues/finding_venues.py", line 157, in main
test_venue_search()
File "/Users/simonprickett/source/github/ru101/redisu/ru101/uc05-finding-venues/finding_venues.py", line 69, in test_venue_search
create_venue(olympic_stadium)
File "/Users/simonprickett/source/github/ru101/redisu/ru101/uc05-finding-venues/finding_venues.py", line 64, in create_venue
redis.geoadd(key, venue['geo']['long'], venue['geo']['lat'], venue['venue'])
File "/Users/simonprickett/source/github/ru101/venv/lib/python3.12/site-packages/redis/commands/core.py", line 5438, in geoadd
raise DataError("GEOADD allows either 'nx' or 'xx', not both")
redis.exceptions.DataError: GEOADD allows either 'nx' or 'xx', not both
Fixed in 636ad29
Closed by #17
It looks like with Python 3.12 that the
distutils
package that redis-py uses isn't present. This was raised by a student on Discord:Try upgrading the version of redis-py used in this course: https://github.com/redislabs-training/ru101/blob/main/requirements.txt - currently quite old (3.0.1).