Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Importing a module dynamically using imp

I am trying to import a module from a different directory dynamically. I am following an answer from this question. I have a module named bar in a directory named foo. The main script will be running in the parent directory to foo.

Here is the code i have thus far in my test script (which is running in the parent directory to foo)

#test.py
import imp

mod = imp.load_source("bar","./foo")

and code for bar.py

#bar.py
class bar:

    def __init__(self):
          print "HELLO WORLD"

But when i run test.py I get this error:

Traceback (most recent call last):
  File "C:\Documents and Settings\user\Desktop\RBR\test.py", line 3, in <module>
    mod = imp.load_source("bar","./foo")
IOError: [Errno 13] Permission denied
like image 636
Richard Avatar asked Feb 11 '11 14:02

Richard


People also ask

How do I import a module dynamically?

To load dynamically a module call import(path) as a function with an argument indicating the specifier (aka path) to a module. const module = await import(path) returns a promise that resolves to an object containing the components of the imported module.

What are the two ways of importing module?

So there's four different ways to import: Import the whole module using its original name: pycon import random. Import specific things from the module: pycon from random import choice, randint. Import the whole module and rename it, usually using a shorter variable name: pycon import pandas as pd.

What does import IMP do in Python?

The imp module exposes the implementation of Python's import statement. The imp module includes functions that expose part of the underlying implementation of Python's import mechanism for loading code in packages and modules.


2 Answers

imp.load_source requires the pathname + file name of the module to import, you should change your source for the one below:

mod = imp.load_source("bar","./foo/bar.py")
like image 122
Lucas S. Avatar answered Sep 29 '22 14:09

Lucas S.


Appears to be a simple pathing problem - check __file__ or cwd... Maybe try an absolute file path first? - This imp example may help.

like image 32
Petriborg Avatar answered Sep 29 '22 14:09

Petriborg