python 如何从Django应用程序中导入一个序列化模块,并将其放在“scripts”包中的独立脚本中?

jq6vz3qz  于 2023-01-08  发布在  Python
关注(0)|答案(1)|浏览(101)

这是我的项目设置。

  • 项目主管
  • 应用程序目录
  • model.py
  • serializer.py
  • 脚本目录
    *初始化.py
  • main.py
  • manage.py

我正在尝试调用外部API获取JSON数据,稍后反序列化并存储到App创建的DB中。
当我main.py使用 python manage.py runscript main 运行www.example.com时,我收到错误“无法导入模块'scripts. main':没有名为'mix. mixapp'的模块“
project setup
我理解脚本与模块之间的区别并阅读Relative imports for the billionth time
我被文章 * 的这一部分卡住了“也许你实际上并不想运行moduleX,你只是想运行一些其他的脚本,比如myfile.py,它使用moduleX中的函数。如果是这样的话,把myfile.py放在其他地方--而不是包目录中--然后运行它。如果在myfile.py中你做了一些事情,比如从package.moduleA导入垃圾邮件,它会工作得很好。"*
这与我的情况类似,我正在运行main.py“脚本”目录中的www.example.com,并使用AppDirectory中的函数。
没有用,请指导我解决这个问题。

lrpiutwd

lrpiutwd1#

我过去也遇到过类似的问题,所以我创建了ultraimport,它让程序员可以更好地控制导入,允许基于文件系统进行导入。
要修复您的错误,您的scripts/main.py可以如下所示:

import ultraimport
SWSerializer = ultraimport('__dir__/../mixapp/serializers.py', 'SWSerializer')

无论你如何运行main.py,这总是有效的。

相关问题