Difference between 'Directory' and 'Python Package' in PyCharm

GuSuku picture GuSuku · Aug 2, 2019 · Viewed 7.5k times · Source

Denter image description here

  1. When to use Directory over Python Package? PS: I understand that I can import from latter but not former. If so, why not create everything as a Python Package?
  2. Also, does PyCharm mark a location as one or the other based on its name? What is the pattern behind this behavior? For example, I created a Directory and named it 'lambda'. But when I renamed it to 'lambdas', pycharm automatically changed it to a Python Package (the briefcase with dot symbol). Python keyword?

Answer

wim picture wim · Aug 2, 2019

When to use Directory over Python Package?

You can use "Python Package" when you want to put some modules in there which should be importable. PyCharm will automatically create an __init__.py for the directory.

Why not create everything as a Python Package?

Not every subdirectory in a project should necessarily be a package. For example docs and tests are commonly just directories.

Does PyCharm mark a location as one or the other based on its name?

PyCharm seems to mark the icon with a dot if the subdirectory name is a valid identifier and not a keyword, regardless of whether the subdirectory is a package or not. This is possibly because, in Python 3.3+, subdirs are also implicit namespace packages (they are still importable even when there is no __init__.py file).

If you have a project associated with a Python 2.7 interpreter, you don't get the dot on the icon unless the __init__.py file is added, since implicit namespace packages are not a thing in Python 2.