Workflow: Python and Virtualenv

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
(train whistling) - Shocking development! I am adding another workflow video, because every once in a while I have to download a Python script and run it. And I do use lots of different kinds of Python development tools from time to time. Jupyter Notebook is a wonderful way of running Python code in an interactive way right in the browser, and there's all sorts of other things you can do too, different ways to work with Python, but I'm going to show you one little thing that I tend to use, which is that I often need to run some Python script, to process some data, or train a model or something that I'm going to eventually come bring and use in JavaScript. And so the tool that I have kind of landed on, that I like to use, is something called Virtualenv. And Virtualenv, Virtual Environment is a tool to create isolated Python environments. And this is useful because I can kind of contain all the Python version, and all the packages and all the dependencies for one thing that I'm trying to do within one workspace. And again, there's Docker, and there's so many other things you could use, so I'm just going to show you Virtual Environment, 'cause it solved a lot of problems for me when I get totally lost in my Python installation on my computer. Now, one thing, to get started with this, you will need to have Python on your computer and PIP on your computer, so those are two prerequisites. Installing Python, installing PIP, if you're on a Mac, it most likely came with some version of one or the other. And the other, so you're kind of in good shape, and that's what I am here, so the first thing I want to do is, I actually just want to say pip install, PIP is Python installation packager. Ha, that's not what it stands for at all. But it's your package manager for Python. Sometimes you'll say PIP three if using Python 3. pip install virtualenv, Virtual Environment. So I want to install that. Truth of the matter is, I've already installed it, so there it is, and you can see it's kind of part of my default Mac OS Python installation, so maybe you're using Miniconda or Anaconda or some other but you want to first start with Virtual Environment. Now, once I have that installed, I need to find a place on my computer to set up my Python environment. And it could be anywhere, I could put it on my desktop. It's crazy, I am a crazy person who sometimes keeps entire Python environments on my desktop. Watch, I'm going to do that right now, cd desktop, I'm going to look on the desktop, there's nothing there, there's like a folder called website, there's processing dot app, and then, I'm going to go here and, user guide is probably what I want to take a look at. I want to create a virtual environment. This is the, this is really the only command, well, this is one command, you don't even need to memorize it because we can look it up. Virtual Environment ENV, now, this is not meant for you to just have to type, capital E, capital N, capital V, that is a placeholder for the name of this Python workspace that you want to use. So I'm going to grab this, I'm just going to say, And I'm going to say, virtualenv and I'm going to call this coding train demo, coding train dash demo, that's going to be the name of this workspace, and it is doing all sorts of stuff to set it up, and blah blah blah. Now I can navigate to the desktop and look, there it is, right there, I've got processing, website directory and coding train demo, and an entire Python installation, with everything I might ever possibly need. Now, it's Python 2.7, so, I'm going to at some point have to examine how can I get a different version of Python if I want with Virtual Environment, which shouldn't be a problem, but let's just push forward. So once I've installed a virtual environment, once I've created a virtual environment, I need to activate it, so the way to activate it is by running this command, source bin activate. So in other words, inside of here, inside of bin activate, this shell script will turn on this virtual environment. So right now, you can see, if I'm in the desktop, and I just say which python, it's pointing to user bin python, the default MAC OS Python installation, and if I say, python dash dash version, we're going to see, I'm using Python 2.7.10 which I, admittedly, is a very old version of Python, so I'm going to, by the end of this video, I'm going to be using Python 3 (laughs) So now, if I were to say source, coding train, oops, coding train demo, (laughs). Oh no, I've got to tab through all of this 'cause I'm a lunatic. Coding train demo bin activate. All of a sudden you can see, look at this, this little note, in my terminal window, in my console, is letting me know that coding train dash demo is activated, so if I were to now say, which python, you can see this is the one it's using. Users coding train desktop coding train demo bin python. Now again, do I really want to put this stuff on the desktop, probably not, but I can move it around. Everything to have to do with this version of Python is running right there, if I can say, I can say python dash dash version, and it's still 2.7.10 but now let's say I want to install TensorFlow. If I say pip install tensorflow (singing) ♪ PIP install TensorFlow dance ♪ And it's finished, oh, and it's installing some other dependencies (laughs), it's going to take forever. Why did I pick this example? (train whistling) (singing) It's going to speed this up, ah, okay, it's done! Alright, so it finished installing TensorFlow, and if I'm just going to run Python right now. I can say, import tensorflow just to see and I get no error, meaning TensorFlow is properly installed for this environment, and how do I get out of this? Control C, no, exit, something like that, okay. Now, if I were to go to a new tab, right, look, coding train is not activated, I'm in a different Python. I'm not in my virtual environment. If I were to say python, and I were to say import tensorflow it has no idea what that is, but I can say source I got to go to coding train bin activate and now, now that workspace is activated so I can install a whole lot of packages and they are all here coding train demo, lib, Python 2.7 and site-packages and we can see, aha, look, these are all the things that were installed, including TensorFlow. So everything is contained within this one directory and I'm working with it here right now. Alright, so now, what if I want to create a virtual environment with a different version of Python? So first what I want to do to make a new virtual environment is I want to deactivate the one that's going. So I'm just going to write deactivate and then I can just check where I am, here I am on the desktop, so I want to make a new virtual environment but with Python 3, so I can say virtualenv dash p for the version of Python, Python 3, and I'm going to call it coding train dash 3 (gasp) aaaaahh, Python 3 does not exist, so the problem is Virtual Environment, it's not magically creating a workspace in Python out of thin air, it's actually taking it from the existing default installation of Python, so I actually have to have Python 3 installed on this computer to be able to make a virtual environment with Python 3, so there's so many different ways you could install Python 3. I kind of like to avoid using this tool called HomeBrew, which is a package manager for installing Unix utilities, it's written in Ruby on a Mac, but the official Python docs say that's the correct way to install it, so let's do that, so I'm going to grab this. I'm going to install HomeBrew, which I probably, let's see, do I have brew installed? No, I do not, so let's install that. Install this thing called HomeBrew, and I'm going to enter in my password, and I'm going to enter it in again, and I'm going to try a different password, there we go. So this is going to install for a little while. (electric music) (bell ring) Oh, it finished, okay. So I've got HomeBrew, looks like it was installed properly. That's great, so now I'm going to, I think the path, let's see if the path, so remember, if I'm going to type brew, ah, it's already there, great, so brew got added to my path already, and remember if you've been following my workflow videos, I'm not looking in the dot profile, I'm looking in the settings file, it's like dot shrc, zshrc, that's my, so let's look at that. I can say, I can open code dot zshrc just so we can always have a look at this file and we can see, ah, so it probably, HomeBrew was just part of the main path so it looks like we're okay, alright. So now, I can go and try to install Python 3. Brew install python, we'll see what happens. Like that, and now we're going to have to wait a little while again. (electric music) (bell ring) Okay, so, great. So that's done, now, if I say which python user bin python, which python3 user local bin python3, so I have now have Python 3 installed on this computer, and I can, and let me just say python dash version, oh, no no, sorry, dash dash version, (laughs) shoot, python dash dash version, and then python3 dash dash version, great. So look, I have both versions of Python on my computer. Now, here we go, remember that command that I was trying to type earlier? Virtual environment dash p python3 coding train 3. Here we go, and going to set up my virtual environment. I'm going to say source, coding train, oops. Coding train dash 3 bin activate. Now which python, bin python, python dash dash version. Python 3, so in this case, right, let me just show you that again, Python, the word Python, is tied to Python 3.7 When I'm not in a virtual environment, I need to specify Python, which is the original Python that came with the computer, an old version, 2.7, or Python 3, which is the new version which I just installed, but since I created the virtual environment with cloning Python 3, the keyword Python is tied to that one and I can once again do things like pip install numpy. Let's pick something that hopefully won't take as long. NumPy is a math library for Python that's used for matrix math and sorts of other things. It installed that, if I do, if I say python import numpy, we can see, I'm just sort of checking, it's working. I'm going to exit from here, I'm going to deactivate and I'm going to say python3 import numpy. Oops, I can't spell, import numpy, not there, okay? So we can see, these workspaces, one is Python 2.7 with TensorFlow and one is Python 3 with NumPy installed and I can completely treat these separately. I can, and they're just sitting here on the desktop, which is a very weird place to have them, but if I decide, you know what, this whole workspace is worthless, I'm just going to delete it, and it's gone. Okay, what are some other things I want to show you? So one thing is, you're going to find it hard, you're going to, this is going to happen to you if you're using Virtual Environment, you're going to forget to activate it, and you're going to start doing stuff and running Python scripts and you're like, why is it not working? Well, so one thing is it's helpful to have that reminder. Again, I want to say a few things, one is, I don't want to have to type this every single time. Maybe there's a way I can create a quick alias to that environment, and in fact there is. So I'm going to go back to my zshrc, that's the equivalent of the bash profile, this is where are of the, shell settings are, for the, when you start up my shell. So I'm going to go to that, I have it open in Visual Studio code and I can just create an alias by saying something like So, I'm going to do an alias for my virtual environment, and I'm going to say, alias coding ct three, like just quick ct3 is my alias for Python 3 and then I can say, I put in quotes, source activate and then I need the full path, so I need to say users, actually I might be able to do this, home. Right, home, desktop, I don't know (laughs) Let's go to here and say, let's just use this. There's probably a way to use an environment variable, but basically what I'm trying to do is do this. Users coding train desktop, and again, you probably don't want to put your virtual environment on the desktop (laughs). Coding train 3 bin activate Actually, scratch that, before I go to the shell, this is never going to work because I forgot something very important, I have to actually set this alias equal to that command, so if I put an equals here, then I go back to the shell, I should be able. Now, if I just type ct3, it's not going to know that command. I could restart iTerm and it would probably know it, but I can also just refresh the shell by saying, source dot zshrc and now I should be able to type ct3, ahh, oh, no such file directory activate. So at least it was looking for that command, it ran that command, why did it not? Oh, I don't know what I'm, I don't know why there's an extra activate here, this is what it should be. Source, the full path, to bin activate. Okay, save, update, and there we go. So that activates it and then I can say, deactivate, and ct3, there we go, now something you might want to do, although you have to be careful about this, is what if I actually just want to automatically, every time I open a new shell, I just want to activate my virtual environment? So in fact, one thing I could do is, once I have this alias, I could actually just say, hey, the last thing that you do, after all the setup happens, is just, I'm going to go down to the bottom, there's tons of stuff commented out. Just run that alias, ct3, so now, if I quit iTerm, quit, and I just restart it. You're going to see, hey look, coding train 3 is activated. A new window, coding train 3 is activated. A new tab, coding train 3 is activated. So coding train 3, that virtual environment, would be auto activated every time. Typically, this is not what I do, I'm sort of, like to turn it on and off, now you can see it's not there, but I can just type in my alias, and I'm running my virtual environment, alright. So this is pretty good, now you can do all of your Python stuff in this environment, and also, it's safe. Any other, as long as you're, if you deactivate it and start running all sorts of other installation stuff, and other Python stuff on your computer, it will not affect that virtual environment. So if you know you need to have exactly this configuration and stuff for this one particular project, you can sandbox it and not have anything else affect it. One more thing I'd like to mention. So I know I started with pip install virtual environment, that's what I was kind of used to, and that's what I've always been using, but it is actually true that once you have Python 3, the whole idea of virtual environments is built in to Python 3 and as of Python 3.6, the way to run, to create a virtual environment just with Python 3, is by saying, so first of all, you have to have Python 3 installed, which I have done as part of this tutorial, but now I can say, python3 dash m and the command I want to run is venv, Virtual Environment, and then, oh actually, and let me be more thoughtful about where I'm putting this. I'm going to go to the documents directory, and then I'm going to say python3 dash m venv and I'm going to call this coding train demo again and I have now created a virtual environment which I can see if I go to the finder. I can see, there it is, coding train demo again. There is all the Python stuff, Python 3.7 and now I can activate it by saying, source, coding train, oops, coding dash train demo again, bin activate and now that Python's environment is activated. Just to be sure which Python, yes, in fact it is this one. I could alias this one, I could install stuff, I can deactivate it, so you could say I could deactivate this and I can reactivate my other virtual environment. I can deactivate that, I can go back and activate this one. I can install packages for this one, and deactivate and go back to the other one, I could alias this one. All of the possibilities that I have shown you are here. So, to recap, if you are using Python, and by the way, my most recent, it's a guest tutorial from Yining, for training a machine learning model to do style transfer, you can go watch those video tutorials, this is a way you can set up Python to run locally, training your model on your computer. So, to recap, Virtual Environment is a way of creating a sandboxed Python environment on your computer that is not affected by anything else and is just a folder anywhere on your computer with all of the, everything Python and all the dependencies you're using. In order to create a virtual environment, you have to have Python installed in the first place. So I recommend you install Python 3 on your computer. I showed you some steps for doing that with brew, but if you're on Windows or Lenix, there's other ways to install Python 3, and actually, built in to Python 3 is the virtual environment command, so you can just say, python 3 dash m v environment, venv, and then name your virtual environment, activate it, deactivate it, and enjoy your Python life forever, okay? So, I look forward to hearing what you think (laughs) I'm really not a Python expert, you might have noticed. I barely use it, so hopefully this was helpful. I'm sure some Python experts out there will tell me all the things I could do better, or different ways. I look forward to hearing about those too, okay? Goodbye, and I hope you enjoyed this extra bonus workflow video. (upbeat music)
Info
Channel: The Coding Train
Views: 73,537
Rating: undefined out of 5
Keywords: tutorial, processing, Processing (Programming Language), creative coding, JavaScript (Programming Language), Intro, Lesson, Lessons, Teacher, p5js, daniel shiffman, p5 js, p5.js tutorial, coding, programming, programming beginners tutorial, programming beginners guide, tips for programming beginners, coding for beginners, coding train, intro programming, workflow, coding workflow, virtualenv, python, python environment, python3, python coding train
Id: nnhjvHYRsmM
Channel Id: undefined
Length: 18min 54sec (1134 seconds)
Published: Thu Sep 27 2018
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.