Panda50
Panda50

Reputation: 939

Import all packages in main.py

I'd like to import all my packages in only one file.

Let assume that I have a main.py file where I call all my class (from others .py files located in a src folder):

main.py
|-- src
  |-- package1.py
  |-- package2.py

the main.py looks like this:

from src.package1 import *
from src.package2 import *

def main():
    class1 = ClassFromPackage1()
    class2 = ClassFromPackage2()

if __name__ == '__main__':
    main()

in package1.py I import let say numpy, scipy and pandas

import numpy
import scipy
import pandas

class ClassFromPackage1():
    #  Do stuff using numpy, scipy and pandas

and in package2.py I use numpy and scikit learn:

import numpy
import sklearn

class ClassFromPackage2():
    #  Do stuff using numpy and sklearn

Is there a way to import all packages in one file Foo.py where I only write:

import numpy
import sklearn
import scipy
import pandas

and import this Foo.py in src .py? like this for example with package1.py

import Foo

class ClassFromPackage1():
    #  Do stuff using numpy, scipy and pandas

Is this a good idea? Does it reduce memory consumption? Will it helps python to start the main.py faster?

Upvotes: 2

Views: 247

Answers (2)

tobias
tobias

Reputation: 291

The way you have already done it is how it is usually done. Similar to header files in C/C++, you make the dependencies explicit. And that it is a good thing.

You asked if it will run faster, the answer is no. All imports are shared. This, sometimes, causes unwanted side effects, but that is not the question here.

Upvotes: 2

Ayush Sehrawat
Ayush Sehrawat

Reputation: 325

Looks like you want to make code cleaner? What you can do is create a file like foo.py and put all imports in it. Then you can import modules inside foo.py by doing

from foo import *

This will indirectly import all modules.

Upvotes: 3

Related Questions