krisdigitx
krisdigitx

Reputation: 7126

python relative import error

this is my project structure

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

the user is supposed to execute program.py and it would pass the options to 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
    ......
    ...
    ..
    .

however I get this error:

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

Upvotes: 1

Views: 87

Answers (1)

Patrick Kostjens
Patrick Kostjens

Reputation: 5105

The __init__.py has the wrong name in your src folder. It's missing the . in the filename.

Also, your Project/project-2.5/ folder does not have a __init__.py either. If you fix those issues, it should work fine.

Upvotes: 1

Related Questions