django.setup()找不到我的Django项目

问题描述 投票:0回答:2

[我正在尝试编写一个伪造的脚本,以使用一些伪数据填充我的Django 3.0.4项目,但是在脚本的开始就卡住了。

如果我运行此命令:

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'MyProject.settings')

import django
django.setup()

我收到此错误:

     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 'MyProject'

脚本与我的settings.py,urls.py等在同一文件夹中,并且正在django项目的venv中执行。

为什么执行django.setup()时找不到我的项目?

python django faker django-3.0
2个回答
0
投票

我最初的猜测,因为它是moduleNotFoundError,所以您正在使用项目的显示名称,而不是lib-name。尝试切换到小写的“ myproject.settings”。


0
投票

在这里找到答案:How to make a script to insert data in my default sqlite3 database django

必须将项目目录附加到sys.path,一切都很好。鉴于脚本正在该目录中运行,这有点奇怪,但它确实有效。还修改了代码以提取脚本路径,而不是像上面的链接那样对其进行硬编码。

最终代码如下:

import os, sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'MyProject.settings')

import django
django.setup()
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.