isar
isar

Reputation: 1791

Importing your own Python modules

I understand the four lines below:

import bpy
import numpy as np
from sys import argv
from os import *

But I've never seen the following lines:

from . uisun import *
from . hdr import sunposition

What about the dot? Does it refer to the position in the directory or something else? The files uisun.py, sunposition.py, hdr.py are in the same directory within __init__.py which contains the code above. By the way, this comes from a Blender addon.

Upvotes: 2

Views: 215

Answers (2)

Kasravnd
Kasravnd

Reputation: 107347

ITs Intra-package References :

The submodules often need to refer to each other. For example, the surround module might use the echo module. In fact, such references are so common that the import statement first looks in the containing package before looking in the standard module search path. Thus, the surround module can simply use import echo or from echo import echofilter. If the imported module is not found in the current package (the package of which the current module is a submodule), the import statement looks for a top-level module with the given name.

When packages are structured into subpackages (as with the sound package in the example), you can use absolute imports to refer to submodules of siblings packages. For example, if the module sound.filters.vocoder needs to use the echo module in the sound.effects package, it can use from sound.effects import echo.

Starting with Python 2.5, in addition to the implicit relative imports described above, you can write explicit relative imports with the from module import name form of import statement. These explicit relative imports use leading dots to indicate the current and parent packages involved in the relative import. From the surround module for example, you might use:

from . import echo
from .. import formats
from ..filters import equalizer

Upvotes: 1

Punson
Punson

Reputation: 145

This is just like playing around in a terminal. '.' means the current directory (where you are running your program from) and '..' means the parent directory. Read this for an example.

Upvotes: 1

Related Questions