Effective PyCharm Transcripts
Lecture: Opening existing packages
0:00 In order to begin exploring PyCharm's package features. Let's start by working with an existing package. So over here on the GitHub PSF,
0:09 Git Hub organization, we have requests, one of the most popular Python packages you've probably heard of it.
0:15 Use it to go and make http requests instead of a browser using Python.
0:20 So let's go and actually get that installed on downloaded and set up on our system So we could theoretically work on it.
0:27 So first of all, let's go to the desktop and we'll just get clone this Then we could open this way through PyCharm by open from source control but
0:36 just kinda start this way, show a little more grassroots way. So I want to open up this,
0:41 remember drag and drop on the PyCharm Mac os others open directory and browse to it. Here it is this is request and this is like the homepage that you
0:51 would see for if you just went to the GitHub Repo, right, This is the Read me over here is the code. We don't need this. We go to request.
0:59 Here's the actual code like here's where you have requests, general method and then the various specializations down here.
1:07 Like give me the head, the post, that put, the patch, and so on. The first thing we need to do is make sure that we have a working PyCharm
1:13 interpreter. We don't So I'm gonna create a new one here. Then PyCharm says there's some requirements for this package.
1:23 Many packages themselves have requirements and when you pip install the package,
1:27 you get the transitive closure of those dependencies and their dependencies and so on. So let's go over here and click install these.
1:34 It turns out that PyCharm actually misses one for this package but it doesn't really
1:38 matter because we're going to need to do some other stuff to work with it anyway so this can take a little moment.
1:43 I'm gonna let it run and then we'll go from there. Success we've got it all installed now in order for us to work with us and
1:50 have Python believe that this package, this source code here. This is actually what we're supposed to work with.
1:57 Not some other package that might be installed in some other way or to have this one set up. What we need to do. We need to go down here.
2:04 There's a couple ways we can do it. One of them is we can say "Python setup.py develop" that will basically install requests
2:11 in place rather than copying it over to site packages which means as you edit these
2:16 files will immediately pick up the changes which is exactly what you want while you're working on the package now, how do I know to do this?
2:23 Maybe I don't PyCharm has some cool tricks or helpers up its sleeve here, go to tools here, notice there's a bunch of things but one of them is
2:32 run a setup py task and check this out. We can do things like we could create a binary distribution like a wheel.
2:40 If we wanted to push this to PyPI we could install it, we could register it, we could do all sorts of things but what we want
2:47 is develop, install package in development mode. And we can also just type development. It asks us if there are any options,
2:54 there are none. So we could go notice we're actually installing a couple other dependencies
2:59 that for some reason are not listed in the setup py but are actually needed. There we go. We've got it all set up and installed and notice there's this
3:07 "request.egg-info". This is what Python uses to know about installed packages.
3:13 And so it's gone right into the root directory so we can come down here into our little console and we can say import requests and which requested.
3:22 We just get we got this one right here. Let's see how we might know that. So we come over and do a couple of things just to show you that this
3:31 is the version we're working with. Let's just say print right at the top.
3:34 You would never ever do this but we can make a print statement run during import So we could say running custom version of requests.
3:44 Yeah. Now if we go down here and we make sure we have a fresh version we import request notice it says running custom version of requests.
3:55 This is the one that we just made the changes to and you can see that they're getting added immediately. Well that's pretty fun.
4:02 But let's go to the API down here and add something a little more fun. Let's say we're going to add a grab it method here.
4:12 Real simple way to come over here and say I want to grab a URL data and print it out and return it if you want to return to
4:19 his text. And what we're gonna do is we're gonna say response equals uh just get on a call to get this at the top of the function passed through the
4:28 URL, make sure it worked raised for status, turn 'response.text'. I think of this as like a simplified way to just call it, grab text from the URL.
4:40 Okay. And let's go to the top up here, make sure that this is getting imported. We don't make our grab it text export here,
4:51 then we won't be able to use it as part of the package. All right now, we should be able to go and write some Python code.
4:58 That's gonna do this. Let's go over here to our desktop and in the request Remember on windows you don't do the dot And this is scripts not been why
5:12 these have to be different. I don't know, I understand why the dot not why the bin is different.
5:17 Okay, so let's go over here and we can say import requests. We gotta run Python, we say import requests. There's our custom version of requests.
5:26 Super cool. And let's say some call it HTML is going to be requests.grab_text Go get it from 'talkpython.fm'. Oh, it's taken a minute.
5:42 That's a good sign. What is our text Huge. That's too much. Let's do a little just the 1st 250 characters. What do we get not enough to see the title?
5:54 Let's do 500. Maybe we need more. But you can see we're getting the 'talk Python to me' podcast details right off the website. How cool is that?
6:03 So we're able to go get a package off source control, put it onto a machine, put it into development mode,
6:12 add a feature to it, granted not a super important feature. Right? You can put these two things together to for yourself, grab text, give it to URL.
6:21 Boom, Here comes the text back or an exception. If there's an error, we did this by creating a folder where the package lived
6:28 then we created virtual environment and activated. Then we came over and we did tools run setup py task and then we're good
6:38 to go, we just make changes. Tried, tried working with the code Probably what you would do is one of two
6:43 things and practice as you would create a little example app that would consume it and
6:48 then exercise it if you want to be fairly dynamic or like they have over here you would create some tests that you could run.