我有一个python项目,本质上是一组脚本和工具,我这样打包:
myProject
- bin/
- sometasks/
- task1.py
- task2.py
- someothertasks/
- othertask1.py
- othertask2.py
- settings.py
- etc.py
为了通过cronjob或命令行运行任务(或作业,脚本等),我按这样运行:
python -m bin.sometasks.task1
它运行正常,但是当我在Celery中添加守护进程时,我开始遇到相对导入的问题。
例如,尝试
import myProject.etc #-or-# import .etc
由于守护程序中项目的根现在是“sometasks”或我的其他子目录之一,因此无效。
根据我的理解,我需要使用某种可以导入和运行“任务”的根级脚本。我假设这与Django的manage.py脚本类似。
谷歌似乎建议使用setuptools,但我的印象是包分发,这个项目是私有的。
实现这一目标的最佳做法是什么?
答案 0 :(得分:0)
这是一个快速(但有点愚蠢)的修复:
try:
import myProject.etc #-or-# import .etc
except ImportError:
import sys
import os
sys.path.append(os.getcwd() + '/../../')
import myProject.etc #-or-# import .etc