-
Notifications
You must be signed in to change notification settings - Fork 286
Description
❌ This issue is not open for contribution. Visit Contributing guidelines to learn about the contributing process and how to find suitable issues.
Observed behavior
I've been using uv venv --seed to create virtualenvs. The --seed parameter adds in pip and setuptools, but usually the most recent versions. This is somewhat needed because studio uses pip explicitly, but moreso because the dependency on setuptools is implicit. This uncovered a dependency conflict with a package that isn't compatible with it.
Errors and logs
Unable to load celery application.
While trying to load the module contentcuration the following error occurred:
Traceback (most recent call last):
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/celery/bin/celery.py", line 141, in celery
app = find_app(app)
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/celery/app/utils.py", line 383, in find_app
sym = symbol_by_name(app, imp=imp)
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/kombu/utils/imports.py", line 59, in symbol_by_name
module = imp(module_name, package=package, **kwargs)
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/celery/utils/imports.py", line 109, in import_from_cwd
return imp(module, package=package)
File "/home/bjester/.local/share/uv/python/cpython-3.10.19-linux-x86_64-gnu/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/contentcuration/contentcuration/__init__.py", line 3, in <module>
from .celery import app as celery_app # noqa
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/contentcuration/contentcuration/celery.py", line 14, in <module>
app.config_from_object(settings.CELERY)
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/django/conf/__init__.py", line 82, in __getattr__
self._setup(name)
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/django/conf/__init__.py", line 69, in _setup
self._wrapped = Settings(settings_module)
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/django/conf/__init__.py", line 170, in __init__
mod = importlib.import_module(self.SETTINGS_MODULE)
File "/home/bjester/.local/share/uv/python/cpython-3.10.19-linux-x86_64-gnu/lib/python3.10/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/contentcuration/contentcuration/dev_settings.py", line 2, in <module>
from .not_production_settings import * # noqa
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/contentcuration/contentcuration/not_production_settings.py", line 1, in <module>
from .settings import * # noqa
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/contentcuration/contentcuration/settings.py", line 22, in <module>
from contentcuration.utils.secretmanagement import get_secret
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/contentcuration/contentcuration/utils/secretmanagement.py", line 6, in <module>
from google.cloud import kms
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/google/cloud/kms/__init__.py", line 17, in <module>
from google.cloud.kms_v1.services.key_management_service.client import (
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/google/cloud/kms_v1/__init__.py", line 17, in <module>
from .services.key_management_service import KeyManagementServiceClient
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/google/cloud/kms_v1/services/key_management_service/__init__.py", line 16, in <module>
from .client import KeyManagementServiceClient
File "/home/bjester/Projects/learningequality/studio/issue-5691-941b2f/.venv/lib/python3.10/site-packages/google/cloud/kms_v1/services/key_management_service/client.py", line 21, in <module>
import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources'
Expected behavior
We should add an explicit dependency on setuptools so we can ensure compatibility across all packages.
User-facing consequences
Developers may encounter this and not understand what's wrong. The current approach makes developer setup brittle towards dependency changes.
Steps to reproduce
- Run
uv venv --seedto create virtualenv - Install all packages
- Attempt to run the celery workers
make devceleryworkers
Context
Observed testing: #5695
