Python Jumpstart by Building 10 Apps Transcripts
Chapter: App 5: Real-time weather client
Lecture: Virtual environments: A clean slate
Login or
purchase this course
to watch this video and the rest of the course contents.
0:00
Before we move on from our weather app
0:02
let's look at one other important concept around PyPi, packaging, pip
0:08
and this whole external package management for Python.
0:12
Remember, we could see what was installed by saying pip 3 list
0:16
and over here we have various things like stripe
0:19
1.28.0 for credit card processing.
0:23
And we have pigments for web apps
0:26
now what do you do when you have
0:29
more than one application you want to run on your machine.
0:32
And they both use stripe but the stripe API had
0:36
a breaking change from 1.26 to 1.28
0:40
and one of the apps is written to use the 2.6 API
0:44
and one of your apps is using the 2.8 API
0:46
what do you do, do you just reinstall and uninstall
0:49
and push the versions backwards and forward
0:52
like how do you deal with that version difference, right
0:54
you can't run both apps on your machine at the same time
0:57
without continuously reconfiguring your machine
1:01
also, if I was going to give my app to somebody deploy to production
1:06
give it to a user maybe runs on their machine
1:09
how would I know what I need?
1:11
In this list, what is in this list is required to run the weather app?
1:15
Well, you and I know because we just wrote it
1:17
we know that requests is needed and up at the top bs4 is needed.
1:22
But, there is nothing here that makes it clear what is needed
1:27
now there is ways to do that and with packaging
1:29
and packaging up your apps in certain ways
1:32
but the environment itself does not help us here
1:34
so we have these two problems
1:36
different apps may use different versions of the same package
1:39
and it's very hard to tell what's needed to run a particular app.
1:42
Another problem is if I want to install something here
1:45
I may need to run this as admin, also not the best.
1:49
So there is a way to solve this problem
1:52
and there is an external package that will solve it for all versions of Python
1:55
there is a built in version in Python 3
1:59
that only works in Python 3 called Venv
2:00
and I'll go and show you the way that works
2:04
uniformly across all the different versions.
2:06
So there is something called virtual env that is built to address this problem,
2:10
let's see how we can use virtual env to create a special dedicated environment
2:14
completely isolated from the general machine
2:16
just for this weather app and its packages.
2:19
I made a folder called Python environments,
2:21
let's go in there and see right now it's empty,
2:24
so I am going to use virtual env to actually create environment,
2:27
so one question you might want to ask is which virtual env do you have.
2:31
We have the one from Python 3 so you want to make sure you run that one,
2:35
in this case we need to type virtual env as a program,
2:37
if you want to run the other one
2:40
you might have to run it as a module and through Python directly
2:42
so it's something like Python 3-env space virtualenv.
2:49
Like so, but we don't have to do this,
2:51
we can just type virtualenv, right,
2:55
so what we are going to do now is we want to tell virtual env go and create
2:58
a clean empty Python environment, Python 3, for us to work with.
3:02
So we'll say virtualenv and then we'll just give it a folder name
3:05
so let's call this weather. py3
3:08
just to make it more obvious this is for the weather app and it's Python 3.
3:13
You can see that it's copy the Python 3 executable over and it's also setup pip
3:17
setup tools and few other things.
3:20
So now if I look there should be this folder, if I type correctly,
3:22
there will be this folder, so we can go in there and look and there is a bin folder
3:26
so let's go into this bin, but before I go into the bin
3:31
let me ask the question which Python 3 would I get if I run it
3:35
and let's ask pip3 list.
3:38
There is all the stuff that's in the main machine, ok,
3:41
so let's look in we go in the bin
3:43
you'll see that there is an activate
3:46
and what we are going to do is we are going to run this activate
3:48
and we want to run it against the current shells, so we'll say
3:50
. to source activated
3:52
this isn't necessary in Windows, the dot, it doesn't work, I don't believe,
3:55
we'll say this now watch the command prompt change
3:58
now you see it says weather 3.
4:00
And if I go somewhere else, you see now I know that I have
4:03
my Python 3 weather environment as the active Python environment
4:07
so if I ask questions like which Python
4:09
oh now all of the sudden I've got the one running out of there
4:12
regardless of where I am and if I say pip list
4:15
well we just have an empty system.
4:18
Now the version that got installed into our little virtual environment is out of date
4:21
let's just not worry about that for now.
4:24
Ok, so we can actually use this to run our app.
4:28
So let's go over to where we wrote our weather app say CD and this,
4:34
if we look in here we can see there is our program, that looks familiar, right,
4:38
this is our little weather app, great,
4:41
but if we try to run it we say Python 3 but we don't need to say Python 3
4:44
now there is only one Python in this virtual environment
4:47
and we give it our program, there is going to be a problem.
4:51
It says, this concept of Requests as a module-
4:54
this doesn't mean anything to me
4:56
there is no module named requests
4:59
because in this environment we have nothing
5:02
we just have this clean environment here
5:04
so let's quickly install what we need, we know that we need
5:06
Requests and we need Beautiful Soup 4.
5:10
We can install them both at the same time like this,
5:14
if we don't forget to put the install command in there.
5:20
Excellent, now if we ask pip list you'll see we have
5:23
Request, Beautiful Soup and nothing else
5:26
I am kind of getting tired of this, so let's just run it
5:28
so we have something nice and clean.
5:31
So now if we list, you can see we just have Beautiful Soup, Request
5:34
and the 3 foundational bits.
5:36
Ok, so again, let's try to run this
5:38
we'll say Python and we'll give it the program
5:41
oh look, it's running, all right, 97201 perfect
5:46
the temperature in Portland, Oregon is 7.4 degrees Celsius
5:49
and it's partly cloudy, how awesome is that,
5:52
so it doesn't matter if somebody else installs
5:55
Requests or Beautiful Soup on this machine
5:57
and they have a different version or they updated
6:00
we are a 100% isolated and just have this working version of Python here
6:05
this clean version of Python 3
6:10
and our own user profile in this folder that we created.
6:14
So the last thing to do is use this, in PyCharm.
6:17
So we are over here in PyCharm
6:20
and if you see when I run it that we are still running out of the main python 3.5
6:24
and when I go to the project interpreter,
6:27
you can see that's one we have selected here
6:30
and we have again all the stuff that we saw in Pip list,
6:32
we can actually go over here and select one
6:35
if I hit show all it lets you have this little management thing
6:37
here is an old one I can clean up, then I can add,
6:40
I can say add local or I could even create
6:43
a virtual environment that a whole process you just saw me do with virtual env
6:47
creating this stuff and all that, just click this button and it will actually do that for you.
6:51
So that's super nice,
6:55
but what I want to do is add the one that we just created.
6:58
So we can just browse over here to our environment,
7:01
and it loads up and we just pick Python,
7:06
perfect so now we have this, we can actually select this
7:09
to be the project interpreter for the current project
7:12
and now look what's in here, you can see it's just that clean environment,
7:15
so let's go over here hit ok, it takes a moment for it to update and index the
7:20
environment, now it's ready to run, now look at this,
7:23
user/screencaster/python_environments/weather_py3bin/python,
7:28
so now we are using again form PyCharm
7:31
that isolated clean environment, very nice,
7:33
and let's just check one final time what the weather is in
7:36
let's say 92118- beautiful, the temperature
7:39
in lovely Coronado California is 15.2 degrees Celsius and mostly cloudy,
7:44
hey, where is the sun San Diego?
7:46
Anyway, this is working using our environments,
7:49
using our packages that we have installed form PyPi using pip
7:52
into that environment- lovely.
7:55
So that brings this application to a close
7:57
I hope you've learned a lot and had a lot of fun doing it,
8:00
we are just going to re-iterate one more time,
8:02
remember, you should try to use APIs and verify
8:06
the usage rights when you are doing screen scraping
8:09
but it is a really cool way to get data into your app.