views:

91

answers:

4

In Ruby, instead of repeating the "require" (the "import" in Python) word lots of times, I do

%w{lib1 lib2 lib3 lib4 lib5}.each { |x| require x }

So it iterates over the set of "libs" and "require" (import) each one of them. Now I'm writing a Python script and I would like to do something like that. Is there a way to, or do I need to write "import" for all of them.

The straight-forward "traduction" would be something like the following code. Anyway, since Python does not import libs named as strings, it does not work.

requirements = [lib1, lib2, lib3, lib4, lib5]
for lib in requirements:
    import lib

Thanks in advance

+5  A: 

import lib1, lib2, lib3, lib4, lib5

ykaganovich
+2  A: 

Try this:

import lib1, lib2, lib3, lib4, lib5

You can also change the name they are imported under in this way, like so:

import lib1 as l1, lib2 as l2, lib3, lib4 as l4, lib5
Zonda333
A: 

You can import from a string which contains your module name by using the _import_ function.

requirements = [lib1, lib2, lib3, lib4, lib5]
for lib in requirements:
    x = __import__(lib)
txwikinger
+2  A: 

For known module, just seperate them by commas:

 import lib1, lib2, lib3, lib4, lib5

If you really need to programatically import based on dynamic variables, a literal translation of your ruby would be:

 modnames = "lib1 lib2 lib3 lib4 lib5".split()
 for lib in modnames:
     globals()[lib] = __import__(lib)

Though there's no need for this in your example.

Brian