How to fix “Attempted relative import in non-package” even with __init__.py

后端 未结 19 2578
予麋鹿
予麋鹿 2020-11-21 21:51

I\'m trying to follow PEP 328, with the following directory structure:

pkg/
  __init__.py
  components/
    core.py
    __init__.py
  tests/
    core_test.py         


        
19条回答
  •  别跟我提以往
    2020-11-21 22:55

    To elaborate on Ignacio Vazquez-Abrams's answer:

    The Python import mechanism works relative to the __name__ of the current file. When you execute a file directly, it doesn't have its usual name, but has "__main__" as its name instead. So relative imports don't work.

    You can, as Igancio suggested, execute it using the -m option. If you have a part of your package that is meant to be run as a script, you can also use the __package__ attribute to tell that file what name it's supposed to have in the package hierarchy.

    See http://www.python.org/dev/peps/pep-0366/ for details.

提交回复
热议问题