Search code examples
pythonvariablesvariable-variables

How do I import variable packages in Python like using variable variables ($$) in PHP?


I want to import some package depending on which value the user chooses.

The default is file1.py:

from files import file1

If user chooses file2, it should be :

from files import file2

In PHP, I can do this using variable variables:

$file_name = 'file1';
include($$file_name);
$file_name = 'file2';
include($$file_name);

How can I do this in Python?


Solution

  • Python doesn't have a feature that's directly equivalent to PHP's "variable variables". To get a "variable variable"'s value (or the value of any other expression) you can use the eval function.

    foo = "Hello World"
    print eval("foo")
    

    However, this can't be used in an import statement.

    It is possible to use the __import__ function to import using a variable.

    package = "os"
    name = "path"
    
    imported = getattr(__import__(package, fromlist=[name]), name)
    

    is equivalent to

    from os import path as imported