Using os.os. path. abspath() can be used to get the parent directory. This method is used to get the normalized version of the path.
Importing module from a package We can import modules from packages using the dot (.) operator. Now, if this module contains a function named select_difficulty() , we must use the full name to reference it. Now we can directly call this function.
Relative imports use dot(.) notation to specify a location. A single dot specifies that the module is in the current directory, two dots indicate that the module is in its parent directory of the current location and three dots indicate that it is in the grandparent directory and so on.
It all depends on which script you run. That script's path will be added to python's search path automatically.
Make it the following structure:
TestApp/
TestApp/README
TestApp/LICENSE
TestApp/setup.py
TestApp/run_test.py
TestApp/testapp/__init__.py
TestApp/testapp/testmsg.py
TestApp/testapp/sub/
TestApp/testapp/sub/__init__.py
TestApp/testapp/sub/testprinter.py
Then run TestApp/run_test.py
first:
from testapp.sub.testprinter import functest ; functest()
Then TestApp/testapp/sub/testprinter.py
could do:
from testapp.testmsg import MSG
print("The message is: {0}".format(testmsg.MSG))
More good hints here;
Use relative import like below
from .. import testmsg
For people who still have this same problem. This is how I solve mine:
import unittest
import sys
import os
sys.path.append(os.getcwd() + '/..')
from my_module.calc import *
This question has the answer - dynamic importing:
How to import a python file in a parent directory
import sys
sys.path.append(path_to_parent)
import parent.file1
Here's something I made to import anything. Of course, you have to still copy this script around to local directories, import it, and use
the path you want.
import sys
import os
# a function that can be used to import a python module from anywhere - even parent directories
def use(path):
scriptDirectory = os.path.dirname(sys.argv[0]) # this is necessary to allow drag and drop (over the script) to work
importPath = os.path.dirname(path)
importModule = os.path.basename(path)
sys.path.append(scriptDirectory+"\\"+importPath) # Effing mess you have to go through to get python to import from a parent directory
module = __import__(importModule)
for attr in dir(module):
if not attr.startswith('_'):
__builtins__[attr] = getattr(module, attr)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With