Say we have to files in our root:
How can we make these useable across files with the help of modules?
Let's say this is our
def add(a, b): return a + b
If I want to use it in
Every time we run a file with imports, there is a
__pycache__ created where a compiled version of the
utility.py is cached.
Say our layout is like so:
- main.py - shopping/shopping_cart.py - utility.py
How can we use
main.py? What we have done is create a package. A package is a folder containing modules.
This is how it would work:
import shopping.shopping_cart print(shopping.shopping_cart) # <module 'shopping.shopping_cart' from 'shopping/shopping_cart.py'>
Within a package, it is a rule that there is a
__init__.py file. The interpreter needs it to know that it is a package. It can be completely empty.
What happens if you have another package within a package? How does importing begin to work?
The import then becomes:
import shopping.more_shopping_cart.shopping_cart print(shopping.more_shopping_cart.shopping_cart) # <module 'shopping.shopping_cart' from 'shopping/shopping_cart.py'>
But this becomes unclear. What we can do is start to make use of the
from shopping.more_shopping_cart.shopping_cart import buy print(buy) # <module 'shopping.shopping_cart' from 'shopping/shopping_cart.py'>
What happens when you are going to have function naming collisions?
You can avoid this by importing up a level or importing all with
# Preferred on the video from shopping.more_shopping_cart.shopping_cart import * # Alternative from shopping.more_shopping_cart import shopping_cart
We need to cover the concept of
__name__ because something you will see often in Python:
if __name__ == '__main__': # Something
__name__ references to module name (including the package).
__main__ is the file that is being run. That
if control statement allows us to do something within a module file when we are running it.
Python has a bunch of built-in modules.
In other languages, this would be known as the standard library.
When you want to learn more about a module, we can use
import random help(random) # See help on module dir(random) # See all the functions in the module
This section went over the Python Package Index.
Virtual environments allows multiple versions of different modules to be installed on a single machine.
venv folder is where the virtual environment info is stored when using
You can have new environments use
Virtualenv and more.