在不破坏导入的情况下放置standalone-django脚本的位置?

Sha*_*e H 5 python django

我还是Python的新手.

我有一个Django网站,里面有几个应用程序和一个/libs目录.我需要添加几个将使用我的Django模型的cron作业.我已经完成了所有这些,没什么大不了的.

不过,我的进口有问题.

我想将这些脚本包含在他们通常所属的应用程序中.但是当我从命令行执行脚本时,它无法从/libs目录中加载模块.

为了具体说明dir结构,想象一下这个伪代码:

import ./../libs/mysharedlib.py   
Run Code Online (Sandbox Code Playgroud)

换句话说,脚本和sharedlib是:

~/project/myapp/myscript.py

~/project/libs/mysharedlib.py
Run Code Online (Sandbox Code Playgroud)

我知道我可以添加~/project到我的PYTHONPATH但是我不得不担心在部署期间这样做而且它感觉很糟糕.

我应该将我的脚本移出我的应用程序并将其放入~/project?有没有更好的办法?

dm0*_*514 13

有一种更好的方法,自定义管理命令解决了这个问题. https://docs.djangoproject.com/en/dev/howto/custom-management-commands/

这些允许您编写独立的实用程序脚本.您可以将它们作为cron运行,也可以作为实用程序运行.它们使用与django应用程序中任何其他模块完全相同的路径.

虽然这些解决了导入问题,但是你的libs目录是否有__init__.py文件?你能在视图中导入你的lib目录吗?或者你的导入是不是在你的cron脚本中工作?无论哪种方式,自定义管理命令都可解决此问题.