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.