Managing Python Dependencies Transcripts
Chapter: Managing Third-Party Dependencies With pip
Lecture: Introduction to Dependency Management
Login or
purchase this course
to watch this video and the rest of the course contents.
0:01
You might have heard the term dependency management
0:04
in combination with Python packaging.
0:06
What is dependency management, and what do you need it for?
0:09
So most real world programs that you are going to write
0:12
and that you are going to encounter are likely to use
0:15
third party libraries and frameworks.
0:18
These frameworks that the program uses and that the program requires
0:23
to function are called dependencies, so here is an example.
0:26
Let's say you are working on a project called "my program" and to do its job,
0:31
my program actually relies on two other packages,
0:35
and so my program would enlist these other dependencies
0:39
and use those other packages and other libraries to get the job done.
0:44
So maybe you don't want to reimplement some function like HTTP downloads
0:49
and you program would just use that in a library
0:52
and these packages "super library" and "other dependency",
0:55
they would be called dependencies of my program in this case.
0:59
Of course, not only can your programs have dependencies,
1:05
but the dependencies of you programs can have dependencies again,
1:10
and so on, and this is what we refer to as transitive dependencies,
1:14
or you could also think of them as dependencies of dependencies
1:17
or secondary dependencies.
1:20
So let's take a look at our "my program" example.
1:24
So in this case, we said "my program" has two direct dependencies
1:27
and that will be "super library" and "other dependency",
1:31
now what you can see here is that "super library" and "other dependency" itself,
1:36
actually have dependencies again,
1:38
and some of the dependencies of those dependencies, have dependencies again.
1:43
So this is a whole tree of dependencies.
1:46
On the one hand, having this flexibility is great
1:49
because it allows us to abstract away all kinds of functionality
1:52
and then make that available to other programs and other libraries,
1:56
so that the community of Python developers can build
1:59
increasingly powerful libraries and programs and frameworks.
2:03
But on the other hand, I am sure you're starting to see
2:06
why managing dependencies manually is so difficult, it's super time consuming,
2:11
copying and pasting source code makes updating really difficult,
2:16
imagine you downloaded some file off the internet, some Python source code
2:20
that you're including in your project,
2:23
what happens if you want to update that file-
2:26
maybe a new version came out or the author released a new version,
2:29
and you want to include that in your program
2:31
to make use of some awesome new features.
2:33
Now, if you have to manually copy and paste that around
2:36
it's very easy to make mistakes and it's kind of hard to understand
2:39
what the real dependencies of a program are.
2:42
So if you are sending that over to a co-worker
2:45
or you want to publish that program on the internet,
2:47
it becomes very hard for everyone else to actually understand
2:50
what dependencies they would need to install
2:53
in order to get your program to run.
2:57
The solution to all of these problems is of course, more software;
3:00
You know, I am joking here, but, there is software
3:04
that can make your life a little bit easier
3:06
when it comes to dependency management,
3:08
and this software is typically referred to as package managers.