You must be a very good Django programmer. Thank you on behalf of Django community, for such a great answer that even novices like me are able to understand.
I had no idea that there were other non default configurations of the variable BASE_DIR. Julius. On Wed, Apr 26, 2023 at 1:15 AM David Nugent <[email protected]> wrote: > This error is being triggered by an outdated and badly behaved module > that contains the run_cmdb_worker management command. > > Anything that relies on the presence of BASE_DIR in settings is bad > behaviour. This is an entirely arbitrary variable name that might not even > be present in a non-default configuration, and it effectively a "private" > variable. > > There are better ways to determine the Django base directory (although > reliance on same is also questionable as it probably assumes a specific > Django layout, which is also poor behaviour). > > If you insist on using it, then simply wrap BASE_DIR def with a str() > cast, or use .as_posix() member, i.e. > > BASE_DIR = str(Path(__file__).resolve().parent.parent) > > This may invalidate other uses in your settings module though, for example: > > BASE_DIR / 'someothervalue' > > If your change does not trigger an error otherwise, then you are probably > fine. > > Regards, > David > > > On Mon, Apr 24, 2023 at 2:21 AM DL <[email protected]> wrote: > >> Django 4.2 >> Python 3.10.10 >> >> # python manage.py run_cmdb_worker >> Traceback (most recent call last): >> File "/usr/local/python/lib/python3.10/pkgutil.py", line 417, in >> get_importer >> importer = sys.path_importer_cache[path_item] >> KeyError: PosixPath('/www/cloudadmin') >> >> During handling of the above exception, another exception occurred: >> >> Traceback (most recent call last): >> File "/www/cloudadmin/manage.py", line 22, in <module> >> main() >> File "/www/cloudadmin/manage.py", line 18, in main >> execute_from_command_line(sys.argv) >> File >> "/opt/.pyvenv/lib/python3.10/site-packages/django/core/management/__init__.py", >> line 442, in execute_from_command_line >> utility.execute() >> File >> "/opt/.pyvenv/lib/python3.10/site-packages/django/core/management/__init__.py", >> line 436, in execute >> self.fetch_command(subcommand).run_from_argv(self.argv) >> File >> "/opt/.pyvenv/lib/python3.10/site-packages/django/core/management/__init__.py", >> line 275, in fetch_command >> klass = load_command_class(app_name, subcommand) >> File >> "/opt/.pyvenv/lib/python3.10/site-packages/django/core/management/__init__.py", >> line 48, in load_command_class >> module = import_module("%s.management.commands.%s" % (app_name, name)) >> File "/usr/local/python/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 >> "/www/cloudadmin/apps/cmdb/management/commands/run_cmdb_worker.py", line 2, >> in <module> >> from cmdb.scheduler import Scheduler >> File "/www/cloudadmin/apps/cmdb/scheduler.py", line 3, in <module> >> from apscheduler.schedulers.background import BackgroundScheduler >> File >> "/opt/.pyvenv/lib/python3.10/site-packages/apscheduler/__init__.py", line >> 1, in <module> >> from pkg_resources import get_distribution, DistributionNotFound >> File >> "/opt/.pyvenv/lib/python3.10/site-packages/pkg_resources/__init__.py", line >> 3260, in <module> >> def _initialize_master_working_set(): >> File >> "/opt/.pyvenv/lib/python3.10/site-packages/pkg_resources/__init__.py", line >> 3234, in _call_aside >> f(*args, **kwargs) >> File >> "/opt/.pyvenv/lib/python3.10/site-packages/pkg_resources/__init__.py", line >> 3272, in _initialize_master_working_set >> working_set = WorkingSet._build_master() >> File >> "/opt/.pyvenv/lib/python3.10/site-packages/pkg_resources/__init__.py", line >> 572, in _build_master >> ws = cls() >> File >> "/opt/.pyvenv/lib/python3.10/site-packages/pkg_resources/__init__.py", line >> 565, in __init__ >> self.add_entry(entry) >> File >> "/opt/.pyvenv/lib/python3.10/site-packages/pkg_resources/__init__.py", line >> 621, in add_entry >> for dist in find_distributions(entry, True): >> File >> "/opt/.pyvenv/lib/python3.10/site-packages/pkg_resources/__init__.py", line >> 1988, in find_distributions >> importer = get_importer(path_item) >> File "/usr/local/python/lib/python3.10/pkgutil.py", line 421, in >> get_importer >> importer = path_hook(path_item) >> File "<frozen importlib._bootstrap_external>", line 1632, in >> path_hook_for_FileFinder >> File "<frozen importlib._bootstrap_external>", line 1504, in __init__ >> File "<frozen importlib._bootstrap_external>", line 182, in _path_isabs >> AttributeError: 'PosixPath' object has no attribute 'startswith' >> >> I must midify settings.py, change BASE_DIR, it can run >> # BASE_DIR = Path(__file__).resolve().parent.parent >> BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)) >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Django users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/django-users/033f2f50-b073-4a97-9d66-6cc7f8a18049n%40googlegroups.com >> <https://groups.google.com/d/msgid/django-users/033f2f50-b073-4a97-9d66-6cc7f8a18049n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/CAE5VhgVp2UiGc_Dh0jzcg4hTijXtKk8f0PE8axDpLKbky1xo_g%40mail.gmail.com > <https://groups.google.com/d/msgid/django-users/CAE5VhgVp2UiGc_Dh0jzcg4hTijXtKk8f0PE8axDpLKbky1xo_g%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CANOu6a99zn9bhkfqBSbKhYBcbAWzo1xV9Mt1b5uvAspqJvawsg%40mail.gmail.com.

