Thanks to all and best wishes!

Julius Chesoni在 2023年4月26日星期三下午9:58:23 [UTC+8]寫道:

> 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/879d1244-daea-4baf-8800-f701051566e1n%40googlegroups.com.

Reply via email to