python相对导入错误

时间:2014-09-07 10:26:53

标签: python linux

这是我的项目结构

Project/
      docs/
      scripts/
      project-2.5/
          bin/
             program.py
             __init__.py
          config/
             config.ini
          tests/
          src/
             main_program.py
             __init__.py
      __init__.py

用户应该执行program.py并将选项传递给main_program.py

eg. bin/># python program.py -c ../config/config.ini

program.py

#!/usr/bin/env python

import optparse
from ..src.main_program import main_function

def main():
    parser = optparse.OptionParser()
    parser.add_option('-c', '--config',
                      dest="config_file",
                      default='config.ini'
                        )
    options, remainder = parser.parse_args()
    main_function(options)

if __name__ == "__main__":
    main()

main_program.py

#!/usr/bin/env
import sys

def main_function(options):
    blah blah blah
    ......
    ...
    ..
    .

但是我收到了这个错误:

Traceback (most recent call last):
  File "./program.py", line 6, in <module>
    from ..src.main_program import main_function
ValueError: Attempted relative import in non-package

1 个答案:

答案 0 :(得分:1)

__init__.py文件夹中的src名称错误。它缺少文件名中的.

此外,您的Project/project-2.5/文件夹也没有__init__.py。如果您解决了这些问题,它应该可以正常工作。