Cannot find reference 'xxx' in __init__.py

pycharm, python

Solution

This is a bug in pycharm. PyCharm seems to be expecting the referenced module to be included in an `__all__ = []` statement.

For proper coding etiquette, should you include the `__all__` statement from your modules? ..this is actually the question we hear young Spock answering while he was being tested, to which he responded: "It is morally praiseworthy but not morally obligatory."

To get around it, you can simply disable that (extremely non-critical) (highly useful) inspection globally, or suppress it for the specific function or statement.

To do so:

- put the caret over the erroring text ('choice', from your example above)

- Bring up the intention menu (alt-enter by default, mine is set to alt-backspace)

- hit the right arrow to open the submenu, and select the relevant action

PyCharm has its share of small bugs like this, but in my opinion its benefits far outweigh its drawbacks. If you'd like to try another good IDE, there's also Spyder/Spyderlib.

Edited: Originally, I thought that this was specific to checking `__all__`, but it looks like it's the more general 'Unresolved References' check, which can be very useful. It's probably best to use statement-level disabling of the feature, either by using the menu as mentioned above, or by specifying `# noinspection PyUnresolvedReferences` on the line preceding the statement.

Problem

I have a project in PyCharm organized as follows: ``` -- Sources |--__init__.py |--Calculators |--__init__.py |--Filters.py |--Controllers |--__init__.py |--FiltersController.py |--Viewers |--__init__.py |--DataVisualization.py |--Models |--__init__.py |--Data ``` All of my `__init__.py`, except for the one right above `Sources` are blank files. I am receiving a lot of warnings of the kind: Cannot find reference 'xxx' in __init__.py For example, my `FiltersController.py` has this piece of code: ``` import numpy.random as npr bootstrap = npr.choice(image_base.data[max(0, x-2):x+3, max(0, y-2):y+3].flatten(), size=(3, 3), replace=True) ``` And I get this warning: Cannot find reference 'choice' in __init__.py I'm googling wondering what does this mean and what should I do to code properly in Python.

Original source

Related problems