好吧,我跑了
python -m compileall .
但是生成的文件位于 pycache
管理.cpython-311.pyc 和 urls.cpython-311
我的问题是当我跑步时
python manage.cpython-311.pyc runserver
我不断收到错误消息
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1126, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 1204, in _gcd_import
File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
File "<frozen importlib._bootstrap>", line 1140, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'settings'
我不是最聪明的 Django 开发人员。但是,如果有人与我分享如何解决这个问题,我将不胜感激。
当您运行 Python 代码时 (并且它能够执行并且没有其他指示) 解释器会将导入编译为
.pyc
文件并将它们存储在 __pycache__
文件夹中。
在下次运行时,解释器将考虑这些文件,如果它们适合源文件,则使用它们而不是重复编译阶段。
文件
__pycache__
并不意味着可以直接运行,尽管您可以这样做。在您的情况下,从 __pycache__
运行文件会将导入库移动到那里,并且所有导入都将失败,无需额外调整。
compileall
调用将手动执行此编译步骤。它节省了一些执行时间。这在某些情况下很有帮助,例如将代码部署在大量容器中,预计这些容器的生命周期很短。在大多数部署中,其工作量并不差。
结论:运行源文件(
.py
)并让缓存机制在后台完成其工作。