Related
I am doing a docker django project with celery in which the project's name for main container is main_config. the main_ms\main_config\celery.py looks like
import os
from celery import Celery
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
includedTasks=[]
CeleryApp = Celery ('main_config', broker=settings.CELERY_BROKER_URL, backend=settings.CELERY_RESULT_BACKEND,include=includedTasks)
CeleryApp.config_from_object('django.conf:settings', namespace='CELERY')
CeleryApp.autodiscover_tasks()
in docker-compose this containers is like:
main_django_ser:
container_name: main_django_container
build:
context: ./main_ms
dockerfile: Dockerfile.main
command: sh -c "
celery -A main_config.celery worker --loglevel=info &&
python manage.py runserver 0.0.0.0:8000"
by starting docker-compose gave the error below:
main_django_container | Usage: celery [OPTIONS] COMMAND [ARGS]...
main_django_container | Try 'celery --help' for help.
main_django_container |
main_django_container | Error: Invalid value for '-A' / '--app':
main_django_container | Unable to load celery application.
main_django_container | While trying to load the module main_config.celery the following error occurred:
main_django_container | Traceback (most recent call last):
main_django_container | File "/usr/local/lib/python3.9/site-packages/celery/bin/celery.py", line 57, in convertmain_django_container | return find_app(value)
main_django_container | File "/usr/local/lib/python3.9/site-packages/celery/app/utils.py", line 384, in find_app
main_django_container | sym = symbol_by_name(app, imp=imp)
main_django_container | File "/usr/local/lib/python3.9/site-packages/kombu/utils/imports.py", line 56, in symbol_by_name
main_django_container | module = imp(module_name, package=package, **kwargs)
main_django_container | File "/usr/local/lib/python3.9/site-packages/celery/utils/imports.py", line 105, in import_from_cwd
main_django_container | return imp(module, package=package)
main_django_container | File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
main_django_container | return _bootstrap._gcd_import(name[level:], package, level)
main_django_container | File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
main_django_container | File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
main_django_container | File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
main_django_container | File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
main_django_container | File "<frozen importlib._bootstrap_external>", line 850, in exec_module
main_django_container | File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
main_django_container | File "/main_ms/main_config/__init__.py", line 1, in <module>
main_django_container | from .celery import CeleryApp as celery_app
main_django_container | File "/main_ms/main_config/celery.py", line 6, in <module>
main_django_container | CeleryApp = Celery ('main_config', broker=settings.CELERY_BROKER_URL, backend=settings.CELERY_RESULT_BACKEND,include=includedTasks)
main_django_container | File "/usr/local/lib/python3.9/site-packages/django/conf/__init__.py", line 87, in __getattr__
main_django_container | self._setup(name)
main_django_container | File "/usr/local/lib/python3.9/site-packages/django/conf/__init__.py", line 74, in _setup
main_django_container | self._wrapped = Settings(settings_module)
main_django_container | File "/usr/local/lib/python3.9/site-packages/django/conf/__init__.py", line 183, in __init__
main_django_container | mod = importlib.import_module(self.SETTINGS_MODULE)
main_django_container | File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
main_django_container | return _bootstrap._gcd_import(name[level:], package, level)
main_django_container | ModuleNotFoundError: No module named 'config'
so I changed config to main_config in line 4 of main_ms\main_config\celery.py
and this time gave error:
main_django_container | /usr/local/lib/python3.9/site-packages/celery/platforms.py:840: SecurityWarning: You're running the worker with superuser privileges: this is
main_django_container | absolutely not recommended!
main_django_container |
main_django_container | Please specify a different user using the --uid option.
main_django_container |
main_django_container | User information: uid=0 euid=0 gid=0 egid=0
main_django_container |
main_django_container | warnings.warn(SecurityWarning(ROOT_DISCOURAGED.format(
main_django_container | Traceback (most recent call last):
main_django_container | File "/usr/local/bin/celery", line 8, in <module>
main_django_container | sys.exit(main())
main_django_container | File "/usr/local/lib/python3.9/site-packages/celery/__main__.py", line 15, in main
main_django_container | sys.exit(_main())
main_django_container | File "/usr/local/lib/python3.9/site-packages/celery/bin/celery.py", line 217, in main
main_django_container | return celery(auto_envvar_prefix="CELERY")
main_django_container | File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1130, in __call__
main_django_container | return self.main(*args, **kwargs)
main_django_container | File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1055, in main
main_django_container | rv = self.invoke(ctx)
main_django_container | File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1657, in invoke
main_django_container | return _process_result(sub_ctx.command.invoke(sub_ctx))
main_django_container | File "/usr/local/lib/python3.9/site-packages/click/core.py", line 1404, in invoke
main_django_container | return ctx.invoke(self.callback, **ctx.params)
main_django_container | File "/usr/local/lib/python3.9/site-packages/click/core.py", line 760, in invoke
main_django_container | return __callback(*args, **kwargs)
main_django_container | File "/usr/local/lib/python3.9/site-packages/click/decorators.py", line 26, in new_funcmain_django_container | return f(get_current_context(), *args, **kwargs)
main_django_container | File "/usr/local/lib/python3.9/site-packages/celery/bin/base.py", line 134, in caller
main_django_container | return f(ctx, *args, **kwargs)
main_django_container | File "/usr/local/lib/python3.9/site-packages/celery/bin/worker.py", line 343, in workermain_django_container | worker = app.Worker(
main_django_container | File "/usr/local/lib/python3.9/site-packages/celery/worker/worker.py", line 99, in __init__
main_django_container | self.setup_instance(**self.prepare_args(**kwargs))
main_django_container | File "/usr/local/lib/python3.9/site-packages/celery/worker/worker.py", line 120, in setup_instance
main_django_container | self._conninfo = self.app.connection_for_read()
main_django_container | File "/usr/local/lib/python3.9/site-packages/celery/app/base.py", line 808, in connection_for_read
main_django_container | return self._connection(url or self.conf.broker_read_url, **kwargs)
main_django_container | File "/usr/local/lib/python3.9/site-packages/celery/app/base.py", line 867, in _connection
main_django_container | return self.amqp.Connection(
main_django_container | File "/usr/local/lib/python3.9/site-packages/kombu/connection.py", line 181, in __init__
main_django_container | if not get_transport_cls(transport).can_parse_url:
main_django_container | File "/usr/local/lib/python3.9/site-packages/kombu/transport/__init__.py", line 85, in
get_transport_cls
main_django_container | _transport_cache[transport] = resolve_transport(transport)
main_django_container | File "/usr/local/lib/python3.9/site-packages/kombu/transport/__init__.py", line 70, in
resolve_transport
main_django_container | return symbol_by_name(transport)
main_django_container | File "/usr/local/lib/python3.9/site-packages/kombu/utils/imports.py", line 56, in symbol_by_name
main_django_container | module = imp(module_name, package=package, **kwargs)
main_django_container | File "/usr/local/lib/python3.9/importlib/__init__.py", line 127, in import_module
main_django_container | return _bootstrap._gcd_import(name[level:], package, level)
main_django_container | File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
main_django_container | File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
main_django_container | File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
main_django_container | File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
main_django_container | File "<frozen importlib._bootstrap_external>", line 850, in exec_module
main_django_container | File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
main_django_container | File "/usr/local/lib/python3.9/site-packages/kombu/transport/redis.py", line 262, in <module>
main_django_container | class PrefixedStrictRedis(GlobalKeyPrefixMixin, redis.Redis):
main_django_container | AttributeError: 'NoneType' object has no attribute 'Redis'
I should say the CELERY_BROKER_URL and CELERY_RESULT_BACKEND are redis://redis:6380/0 in main_ms\main_config\settings.py
update (may be considered as an answer for some of errors above)
I realized that I had not added celery[redis]==5.2.7 in requirements.txt which installs python packages. also didnt have redis container in docker-compose.yml and I also checked to have celery -A main_config.celery worker --loglevel=info && specially _config part in command section in django conatainers. now I dont get errors above but a new error pops up: [2022-11-06 13:54:42,190: ERROR/MainProcess] consumer: Cannot connect to redis://redis:6379/0: Error -3 connecting to redis:6379. Try again..
I've split my django environment as per this post.
In settings/base.py I have BASE_DIR specified:
BASE_DIR = Path(__file__).resolve().parent.parent.parent
In settings/__init__.py I have:
from .base import *
env = os.environ['ENV']
...
if env == 'test':
from .test import *
...
In settings/test.py I have DATA_VOLUME_BASE_DIR = BASE_DIR / 'scanned_images'.
I expect that Django loads the settings module, imports settings/base.py, checks the environment ('test'), imports settings/test.py (which works) and the variable is available (which isn't). My stacktrace:
sid_test_web | Traceback (most recent call last):
sid_test_web | File "/code/manage.py", line 22, in <module>
sid_test_web | main()
sid_test_web | File "/code/manage.py", line 18, in main
sid_test_web | execute_from_command_line(sys.argv)
sid_test_web | File "/usr/local/lib/python3.10/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_
sid_test_web | utility.execute()
sid_test_web | File "/usr/local/lib/python3.10/site-packages/django/core/management/__init__.py", line 363, in execute
sid_test_web | settings.INSTALLED_APPS
sid_test_web | File "/usr/local/lib/python3.10/site-packages/django/conf/__init__.py", line 82, in __getattr__
sid_test_web | self._setup(name)
sid_test_web | File "/usr/local/lib/python3.10/site-packages/django/conf/__init__.py", line 69, in _setup
sid_test_web | self._wrapped = Settings(settings_module)
sid_test_web | File "/usr/local/lib/python3.10/site-packages/django/conf/__init__.py", line 170, in __init__
sid_test_web | mod = importlib.import_module(self.SETTINGS_MODULE)
sid_test_web | File "/usr/local/lib/python3.10/importlib/__init__.py", line 126, in import_module
sid_test_web | return _bootstrap._gcd_import(name[level:], package, level)
sid_test_web | File "<frozen importlib._bootstrap>", line 1050, in _gcd_import
sid_test_web | File "<frozen importlib._bootstrap>", line 1027, in _find_and_load
sid_test_web | File "<frozen importlib._bootstrap>", line 1006, in _find_and_load_unlocked
sid_test_web | File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
sid_test_web | File "<frozen importlib._bootstrap_external>", line 883, in exec_module
sid_test_web | File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
sid_test_web | File "/code/my_project/settings/__init__.py", line 9, in <module>
sid_test_web | from .test import *
sid_test_web | File "/code/my_project/settings/test.py", line 39, in <module>
sid_test_web | DATA_VOLUME_BASE_DIR = BASE_DIR / 'scanned_images'
sid_test_web | NameError: name 'BASE_DIR' is not defined
How do I make BASE_DIR variable available?
You have to import the .base setting in your test settings to make them available in test.py
from .base import *
# ... your other test settings
The second thing is to choose which settings you like in the __init__.py.
env = os.environ['ENV']
if env == 'test':
from .test import *
else:
from .base import *
I've been developing a web application under the docker environment. On that way, the approach that views.py in the container access to an other file failed. Following is the logs when the container named ‘web’ run
And, demo/demo_app_views.py is
class TestViews(TemplateView):
template_name='top.html'
with open('usr/src/demo/data/a', 'rb') as data:
b = pickle.load(data)
elder_brother=b['1']
def get_context_data(self, **kwargs):
context=super().get_context_data(**kwargs)
context['brother']=elder_brother
return context
top=TestViews.as_view()
No matter of course, I confirmed the file ‘a’ stored on ‘data’ folder in ‘web’ container
And Dockerfile is
FROM python:3.7-alpine
WORKDIR /usr/src/demo
RUN mkdir /usr/src/demo/staticfiles
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN apk update \ && apk add postgresql-dev gcc python3-dev musl-dev
RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt
COPY ./entrypoint.sh .
COPY . .
ENTRYPOINT ["/usr/src/demo/entrypoint.sh"]
and... Docker-compose.yml is
version: '3.7'
services:
web:
build: ./demo
command: gunicorn demo.wsgi:application --bind 0.0.0.0:8000
volumes:
- ./demo/:/usr/src/demo:cached
- static_volume:/usr/src/demo/staticfiles
expose:
- 8000
env_file:
- ./base.env
depends_on:
- db
db:
image: postgres:11.4-alpine
volumes:
- postgres_data:/var/lib/postgresql/data/
environment:
- POSTGRES_USER=project_demo
- POSTGRES_PASSWORD=project_demo
- POSTGRES_DB=project_demo_dev
nginx:
build: ./nginx
volumes:
- static_volume:/usr/src/demo/staticfiles
ports:
- 1337:80
depends_on:
- web
volumes:
postgres_data:
static_volume:
and the displaced log after docker-compose up -d --build
web_1 | res = instance.__dict__[self.name] = self.func(instance)
web_1 | File "/usr/local/lib/python3.7/site-packages/django/urls/resolvers.py", line 564, in urlconf_module
web_1 | return import_module(self.urlconf_name)
web_1 | File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
web_1 | return _bootstrap._gcd_import(name[level:], package, level)
web_1 | File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
web_1 | File "<frozen importlib._bootstrap>", line 983, in _find_and_load
web_1 | File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
web_1 | File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
web_1 | File "<frozen importlib._bootstrap_external>", line 728, in exec_module
web_1 | File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
web_1 | File "/usr/src/demo/demo/urls.py", line 21, in <module>
web_1 | path('demo_app/', include('demo_app.urls')),
web_1 | File "/usr/local/lib/python3.7/site-packages/django/urls/conf.py", line 34, in include
web_1 | urlconf_module = import_module(urlconf_module)
web_1 | File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
web_1 | return _bootstrap._gcd_import(name[level:], package, level)
web_1 | File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
web_1 | File "<frozen importlib._bootstrap>", line 983, in _find_and_load
web_1 | File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
web_1 | File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
web_1 | File "<frozen importlib._bootstrap_external>", line 728, in exec_module
web_1 | File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
web_1 | File "/usr/src/demo/demo_app/urls.py", line 18, in <module>
web_1 | from . import views
web_1 | File "/usr/src/demo/demo_app/views.py", line 27, in <module>
web_1 | class TestViews(TemplateView):
web_1 | File "/usr/src/demo/demo_app/views.py", line 30, in TestViews
web_1 | with open('usr/src/demo/data/a', 'rb') as data:
web_1 | FileNotFoundError: [Errno 2] No such file or directory: 'usr/src/demo/data/a'
web_1 | Traceback (most recent call last):
web_1 | File "manage.py", line 21, in <module>
web_1 | main()
web_1 | File "manage.py", line 17, in main
web_1 | execute_from_command_line(sys.argv)
web_1 | File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
web_1 | utility.execute()
web_1 | File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 375, in execute
web_1 | self.fetch_command(subcommand).run_from_argv(self.argv)
web_1 | File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 323, in run_from_argv
web_1 | self.execute(*args, **cmd_options)
web_1 | File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 361, in execute
web_1 | self.check()
web_1 | File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 390, in check
web_1 | include_deployment_checks=include_deployment_checks,
web_1 | File "/usr/local/lib/python3.7/site-packages/django/core/management/commands/migrate.py", line 65, in _run_checks
web_1 | issues.extend(super()._run_checks(**kwargs))
web_1 | File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 377, in _run_checks
web_1 | return checks.run_checks(**kwargs)
web_1 | File "/usr/local/lib/python3.7/site-packages/django/core/checks/registry.py", line 72, in run_checks
web_1 | new_errors = check(app_configs=app_configs)
web_1 | File "/usr/local/lib/python3.7/site-packages/django/core/checks/urls.py", line 13, in check_url_config
web_1 | return check_resolver(resolver)
web_1 | File "/usr/local/lib/python3.7/site-packages/django/core/checks/urls.py", line 23, in check_resolver
web_1 | return check_method()
web_1 | File "/usr/local/lib/python3.7/site-packages/django/urls/resolvers.py", line 398, in check
web_1 | for pattern in self.url_patterns:
web_1 | File "/usr/local/lib/python3.7/site-packages/django/utils/functional.py", line 80, in __get__
web_1 | res = instance.__dict__[self.name] = self.func(instance)
web_1 | File "/usr/local/lib/python3.7/site-packages/django/urls/resolvers.py", line 571, in url_patterns
web_1 | patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
web_1 | File "/usr/local/lib/python3.7/site-packages/django/utils/functional.py", line 80, in __get__
web_1 | res = instance.__dict__[self.name] = self.func(instance)
web_1 | File "/usr/local/lib/python3.7/site-packages/django/urls/resolvers.py", line 564, in urlconf_module
web_1 | return import_module(self.urlconf_name)
web_1 | File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
web_1 | return _bootstrap._gcd_import(name[level:], package, level)
web_1 | File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
web_1 | File "<frozen importlib._bootstrap>", line 983, in _find_and_load
web_1 | File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
web_1 | File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
web_1 | File "<frozen importlib._bootstrap_external>", line 728, in exec_module
web_1 | File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
web_1 | File "/usr/src/demo/demo/urls.py", line 21, in <module>
web_1 | path('demo_app/', include('demo_app.urls')),
web_1 | File "/usr/local/lib/python3.7/site-packages/django/urls/conf.py", line 34, in include
web_1 | urlconf_module = import_module(urlconf_module)
web_1 | File "/usr/local/lib/python3.7/importlib/__init__.py", line 127, in import_module
web_1 | return _bootstrap._gcd_import(name[level:], package, level)
web_1 | File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
web_1 | File "<frozen importlib._bootstrap>", line 983, in _find_and_load
web_1 | File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
web_1 | File "<frozen importlib._bootstrap>", line 677, in _load_unlocked
web_1 | File "<frozen importlib._bootstrap_external>", line 728, in exec_module
web_1 | File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
web_1 | File "/usr/src/demo/demo_app/urls.py", line 18, in <module>
web_1 | from . import views
web_1 | File "/usr/src/demo/demo_app/views.py", line 27, in <module>
web_1 | class TestViews(TemplateView):
web_1 | File "/usr/src/demo/demo_app/views.py", line 30, in TestViews
web_1 | with open('usr/src/demo/data/a', 'rb') as data:
web_1 | FileNotFoundError: [Errno 2] No such file or directory: 'usr/src/demo/data/a'
web_1 | [2020-07-04 07:52:18 +0000] [1] [INFO] Starting gunicorn 20.0.4
web_1 | [2020-07-04 07:52:18 +0000] [1] [INFO] Listening at: http://0.0.0.0:8000 (1)
web_1 | [2020-07-04 07:52:18 +0000] [1] [INFO] Using worker: sync
web_1 | [2020-07-04 07:52:18 +0000] [10] [INFO] Booting worker with pid: 10
I’m not good in docker, so please tell me how to access the file ‘a’, which is dictionary type file, not database
Thank you
David's advisable comment led the answer and it is to change
open('usr/src/demo...')
to
open('/usr/src/demo...')
Thank David
I did install django in server. Instead of installing apps next to the django project folder, I installed them inside the django project folder. (I put them next to the settings.py and wsgi.py)
This is structure of django project:
BaseFile
|__django (Project File)
| |___administrator (App)
| | |___ views.py
| | |___ urls.py
| | |___ ...
| |
| |___blog (App)
| | |___ views.py
| | |___ urls.py
| | |___ ...
| |
| |___ __init__.py
| |___ settings.py
| |___ urls.py
| |___ wsgi.py
|
|___ env
|___ manage.py
|___ media
|___ static
|___ templates
And this is my settings.py :
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# MY APPS:
'administrator.apps.AdministratorConfig',
'blog.apps.BlogConfig',
]
And when I want to makemigrations I got this error:
Traceback (most recent call last):
File "manage.py", line 21, in <module>
main()
File "manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "BaseFile/env/lib64/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "BaseFile/env/lib64/python3.6/site-packages/django/core/management/__init__.py", line 357, in execute
django.setup()
File "BaseFile/env/lib64/python3.6/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "BaseFile/env/lib64/python3.6/site-packages/django/apps/registry.py", line 91, in populate
app_config = AppConfig.create(entry)
File "BaseFile/env/lib64/python3.6/site-packages/django/apps/config.py", line 116, in create
mod = import_module(mod_path)
File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 941, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 953, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'administrator'
What is wrong with my codes?
I am trying to implement django-freeradius, but I get the error cannot import name 'ReadOnlyAdmin', when I write the line * in urlspatters within urls.py of my project. I have tried to use the same configuration in https://github.com/openwisp/django-freeradius/blob/master/tests/urls.py, but it does not work.
# myproject/urls.py
from django.contrib import admin
from django.urls import path, include
from openwisp_utils.admin_theme.admin import admin, openwisp_admin
openwisp_admin()
admin.autodiscover()
urlpatterns = [
url(r'^', include('django_freeradius.urls', namespace='freeradius')), #* This line
path('admin/', admin.site.urls),
]
I have installed:
Python 3.6.8
Django 2.2.4
django-filter 2.1.0
django-freeradius 0.1a0
openwisp-utils 0.2.2
These are my apps in settings.py
# myproject/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_freeradius',
'django_filters',
]
And, this is the complete error when I run python manage.py runserver ()
Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/usr/lib/python3.6/threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "/mnt/c/Users/myuser/Documents/python/hotspot/env/lib/python3.6/site-packages/django/utils/autoreload.py", line 54, in wrapper
fn(*args, **kwargs)
File "/mnt/c/Users/myuser/Documents/python/hotspot/env/lib/python3.6/site-packages/django/core/management/commands/runserver.py", line 109, in inner_run
autoreload.raise_last_exception()
File "/mnt/c/Users/myuser/Documents/python/hotspot/env/lib/python3.6/site-packages/django/utils/autoreload.py", line 77, in raise_last_exception
raise _exception[1]
File "/mnt/c/Users/myuser/Documents/python/hotspot/env/lib/python3.6/site-packages/django/core/management/__init__.py", line 337, in execute
autoreload.check_errors(django.setup)()
File "/mnt/c/Users/myuser/Documents/python/hotspot/env/lib/python3.6/site-packages/django/utils/autoreload.py", line 54, in wrapper
fn(*args, **kwargs)
File "/mnt/c/Users/myuser/Documents/python/hotspot/env/lib/python3.6/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/mnt/c/Users/myuser/Documents/python/hotspot/env/lib/python3.6/site-packages/django/apps/registry.py", line 122, in populate
app_config.ready()
File "/mnt/c/Users/myuser/Documents/python/hotspot/env/lib/python3.6/site-packages/django/contrib/admin/apps.py", line 24, in ready
self.module.autodiscover()
File "/mnt/c/Users/myuser/Documents/python/hotspot/env/lib/python3.6/site-packages/django/contrib/admin/__init__.py", line 26, in autodiscover
autodiscover_modules('admin', register_to=site)
File "/mnt/c/Users/myuser/Documents/python/hotspot/env/lib/python3.6/site-packages/django/utils/module_loading.py", line 47, in autodiscover_modules
import_module('%s.%s' % (app_config.name, module_to_search))
File "/mnt/c/Users/myuser/Documents/python/hotspot/env/lib/python3.6/importlib/__init__.py", line 126, in import_module return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/mnt/c/Users/myuser/Documents/python/hotspot/env/src/django-freeradius/django_freeradius/admin.py", line 6, in <module>
from .base.admin import (
File "/mnt/c/Users/myuser/Documents/python/hotspot/env/src/django-freeradius/django_freeradius/base/admin.py", line 9, in <module>
from openwisp_utils.admin import ReadOnlyAdmin, TimeReadonlyAdminMixin
ImportError: cannot import name 'ReadOnlyAdmin'
I appreciate if someone could give me the reason of this error.
Try to install the development version of openwisp-utils:
pip install --upgrade http://github.com/openwisp/openwisp-utils/tarball/master