2

我有这样的文件结构:

project/
    __init__.py
    common/
        __init__.py
        util.py
        utilhelper.py
    stuff/
        __init__.py
        coolstuff/
            __init__.py
            awesome.py

通用/初始化.py

import util, utilhelper

通用/util.py

import utilhelper
help = utilhelper.help()

东西/coolstuff/awesome.py

from common import util
print util.help

当我做:

python 项目/stuff/coolstuff/awesome.py

“from common import util”因“没有名为 common 的模块”而失败。

我意识到我错过了一些非常重要的心理概念,比如路径和包装,因为我不知道如何解决这个问题。但如果可能的话,我想在深层子目录中保留“来自通用导入工具”之类的代码。

我考虑过: - 设置 Paver 以将路径依赖项注入通过 sh 运行 python 脚本的任务中:

@task
@needs(['common'])
def dostuff():
    sh('python stuff/coolstuff/awesome.py')

不幸的是,我不知道自己在做什么,也找不到任何好的例子/教程。

- 使用 imp 在我的 100% 脚本中显式导入相对和/或绝对文件路径

- 在每个 python 文件的顶部编写小 hacky 路径插入

我真的很感激任何建议。

4

1 回答 1

0

作为快速修复,我:

  • 将公共目录移至 stuff/
  • 在 awesome.py "from ..common import util" 中使用了相对导入
  • 在 taskrunner 文件中使用 sh 显式硬编码 -m(模块模式)python 脚本启动器
于 2013-10-04T20:20:18.057 回答