d.b
d.b

Reputation: 32538

Pycharm warning - 'Relative import outside of a package'

Here's the working folder structure

foo/
├─ foo/
│  ├─ __init__.py
__main__.py

Here's what __main__.py looks like:

from .foo import bar

bar()

Here's what the __init__.py looks like:

def bar():
    print("hello")
    pass

When I do python -m foo from outside root, it works as expected. However, PyCharm complains about the from .foo import bar line. The warning message is:

Relative import outside of a package

If the problematic line is changed to from foo import bar, PyCharm doesn't complain but I get following error when running python -m foo:

ImportError: cannot import name 'bar' from 'foo' (unknown location)

Is there a way to have it work while resolving PyCharm warnings?

Upvotes: 3

Views: 2676

Answers (1)

rexess
rexess

Reputation: 755

You may be able to get rid of the warnings by turning the top-level foo directory into its own package.

Adding an __init__.py to top-level foo directory might get the job done.

Upvotes: 5

Related Questions