pathimp
Import Python modules from any file system path.
Installation
pip3 install pathimp
Usage
import pathimp
pathimp.import_module(
name='my_module', # Name of the module directory or file.
path='../path/to/parent/dir', # Path or list of paths to search.
notfound='error') # Raise 'error' or 'ignore' when not found.
import my_module
Background
When using import
, Python tries to find the module in sys.path
. Additional
search directories can be added to sys.path
or specified via the PYTHONPATH
environment variable. This solution works well in many cases. However, adding
directories to sys.path
makes all modules inside the added directories
available to import. This pollution of the import path can lead to accidentally
importing undesired packages. The pathimp
package allows importing packages
from a file system path without polluting the Python import path.
Details
After calling pathimp.import_module()
, the module is available in
sys.modules
and can be imported normally by later code. The function also
returns the module, allowing to use it directly without further import:
import pathimp
my_module = pathimp.import_module('my_module', '../path/to/parent/dir')
If the module is not found as a directory or file under the provided path, a
ModuleNotFoundError
is raied. The exception can be disable by passing the
notfound='ignore'
argument:
pathimp.import_module('my_module', '../path/to/parent/dir', notfound='ignore')
Whether the import succeeded can still be found out by looking at the return
value, which is either the module instance or False
if the module was not
found.