Pylance报faker导入无法解析 Django填充脚本运行无效果
Django假数据填充脚本问题修复方案
脚本运行无输出、无数据填充问题
这个问题是代码缩进错误导致的,你当前脚本里的if __name__ == '__main__':执行块被错误缩进在了populate()函数内部,Python加载脚本时只会执行全局层级的代码,永远不会走到这个判断分支,既不会打印日志,也不会调用populate(20)方法,自然不会产生任何数据。
修正方法:把启动执行的代码块全部移出populate()函数,放到全局无缩进的层级,修正后的完整可运行代码如下:
import os os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'first_project.settings') import django django.setup() # 假数据填充脚本 import random from first_app.models import Topic, AccessRecord, Webpage from faker import Faker fakegen = Faker() topics = ['Search', 'Social', 'Market', 'News', 'Games'] def add_topic(): t = Topic.objects.get_or_create(top_name=random.choice(topics))[0] t.save() return t def populate(N=5): for entry in range(N): # 获取关联主题 top = add_topic() # 生成假数据字段 fake_url = fakegen.url() fake_date = fakegen.date() fake_name = fakegen.company() # 创建网页记录 webpg = Webpage.objects.get_or_create(topic=top, url=fake_url, name=fake_name)[0] # 创建访问记录 acc_rec = AccessRecord.objects.get_or_create(name=webpg, date=fake_date)[0] # 以下启动代码必须放在全局层级,不能缩进在任何函数内部 if __name__ == '__main__': print("populating script!") populate(20) print("populating complete!")
改完之后在你安装了依赖的虚拟环境里执行脚本,就能看到预期的打印输出,数据库里也会生成对应填充的数据。
Pylance提示Import "faker" could not be resolved问题
这个报错是编辑器解释器配置错误导致的,和脚本本身运行逻辑无关:你安装faker的Python/conda环境,和Pylance当前绑定的代码检测环境不是同一个。
修复步骤:
- 在VS Code中按快捷键
Ctrl+Shift+P(macOS系统按Cmd+Shift+P)调出命令面板 - 输入并选择
Python: Select Interpreter选项 - 在弹出的环境列表中,选择你实际运行Django项目、已经安装了faker的虚拟环境
- 等待Pylance完成重新索引,导入报错就会自动消失
内容的提问来源于stack exchange,提问作者FilRose
相关产品推荐
相关产品推荐

