#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]
# test.pyimport sys
# append current python modules' folder path# example: need to import module.py present in '/path/to/python/module/not/in/syspath'
sys.path.append('/path/to/python/module/not/in/syspath')import module
# 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 runtimeimport 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')importfilefile.function()
The solution is very simple, just add a __init__.py file to the directory
where the package or code you want to importis,and then python will treat
that directory as a package. Then isas 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'))