#Unfortunately, Python will only find your file if your file is in the systems path. But fear not! There is a way around this!
#Using python's sys module, we can add a directory to the path just while Python is running, and once Python stops running, it will remove it from the path.
#You can do this by:
import sys
sys.path.insert(0, '/path/to/application/app/folder')
import [file]
# By default, you can't. When importing a file, Python only
# searches the current directory, the directory that the
# entry-point script is running from, and sys.path which includes
# locations such as the package installation directory
# (it's actually a little more complex than this, but this covers
# most cases).
# you can however, add to the path at runtime
import sys
# insert at position 1 in the path, as 0 is the path of this file.
sys.path.insert(1, '/path/to/application/app/folder')
import file
file.function()
The solution is very simple, just add a __init__.py file to the directory
where the package or code you want to import is, and then python will treat
that directory as a package. Then is as simple as just importing the code
like any other third party package. Below is a diagram of best practices
doing this.
package/
|
|----- __init__.py (Empty file)
|------- main_module.py (Contains: import subpackage_1.module_1)
|------- module_0.py (Contains: print('module_0 at parent directory, is imported'))
|
|
|------- subpackage_1/
| |
| |----- __init__.py (Empty file)
| |----- module_1.py (Contains: print('importing other modules from module_1...')
| | import module_0
| | import subpackage_2.module_2
| | import subpackage_1.sub_subpackage_3.module_3)
| |----- photo.png
| |
| |
| |----- sub_subpackage_3/
| |
| |----- __init__.py (Empty file)
| |----- module_3.py (Contains: print('module_3 at sub directory, is imported'))
|
|------- subpackage_2/
| |
| |----- __init__.py (Empty file)
| |----- module_2.py (Contains: print('module_2 at same level directory, is imported'))