Python包和命令行

时间:2014-03-18 12:20:28

标签: python

我有一个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,但我的印象是包分发,这个项目是私有的。

实现这一目标的最佳做法是什么?

1 个答案:

答案 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