Accessing Modules from Another Directory
Modules are often reusable across multiple programming projects. In such cases, it might be impractical to confine a module to a directory specific to a single project.
If you need to access a Python module from a location other than the directory where your main program resides, there are a few options available.
Appending Paths
One approach is to append the module's path to your program files. This method is typically used during development and does not make the module available system-wide.
To append a module's path to another programming file, begin by importing the sys
module along with any other necessary modules for your main program.
The sys
module, part of the Python Standard Library, offers system-specific parameters and functions for setting the module's path.
For instance, if you've relocated the main.py
file to /usr/sammy/
while your main_program.py
file remains in a different directory, you can still import the main
module by importing sys
and appending /usr/sammy/
to Python's file search path.
import sys
sys.path.append('/usr/sammy/')
import main
As long as the path to main.py
is correctly set, running main_program.py
should produce the same output as when main.py
was in the same directory.
Adding the Module to the Python Path
Another option is to add the module to the path where Python searches for modules and packages. This is a more permanent solution, making the module available environment-wide or system-wide.
To determine the paths Python checks, launch the Python interpreter from your programming environment:
python3
Then, import the sys
module:
import sys
Print out the system paths:
print(sys.path)
You'll receive output containing at least one system path. Look for the path relevant to your environment, and consider adding the module to your main system Python path. For instance:
'/usr/sammy/my_env/lib/python3.5/site-packages'
Move your main.py
file to that directory. Once done, you can import the main
module as usual:
import main
Your program should now run without errors.
Modifying the module's path ensures access regardless of the current directory. This is particularly useful when multiple projects reference the same module.