Skip to main content

Python Virtual Environments

I learnt about this early in the Python Course. I filed it away in my brain. Now that I'm learning about Django, it has come up again and all I can think is Virtual Environment who?? So for the benefit of my future junior software developer self, a virtual environment is a tool that enables one to keep  dependencies required by different projects together by creating an environment for them.

In plain speak, I have a hypothetical box for Project A. It requires dependencies with specific versions- Dependency A ver 1.0, Dependency B ver 1.4, Dependency C ver 2.3.I put all these dependencies(with their specific versions) in that box. Now comes along Project B, which requires a different set of dependencies with different versions. Perhaps because the versions have since been updated. I store them all in hypothetical box 2. So each one of these hypothetical boxes is a virtual environment. It allows me to use different dependencies with my different projects because dependencies change with time. If we had to keep updating old code to match the new versions of dependencies, all we'll be doing is playing a neverending game of cat and mouse. And we're all too old for that shit :P
Image from here

Creating a Virtual Environment (using PyCharm)

Step 1: Check which version of Python you're using. Go to 'Command Prompt' and type 'python -V'. Initially, this didn't give me anything, so i just typed 'python'. This took me to the windows store and I downloaded Python. After the download, it worked as it should.

Step 2: Create the virtual environment. Go to your project folder and type 'virtualenv [name of virtual env]'. Once it says 'done.', you're good to go.

If you 'cd' (change directory) into that virtual env you just created, and 'dir' (list out all the files in it), you'll see a 'Scripts' directory. 'cd' into it and 'dir'. You will see a file named 'activate.bat'. That file will activate this particular virtual environment, i.e. if you run the activate.bat for any one of the particular virtual environments you have, you will be launching environment. 

Step 3: Activate the virtual env. To activate the virtual env, just type 'activate' in the script directory. If it worked correctly, you should see something like:
 (TECHPR~1) C:\Users\Student\Desktop\techproject\Scripts> 
The text encased in the brackets is the name of your virtual env. Now if you do any installations or make any changes, it will only affect that project.

**Shortcut to activate : go to the virtual env you created and type 'scripts\activate'

Step 4: Install stuff. Go back into the main virtual environment directory 'cd..' and type 'pip install [whatever you want to install]==[version number]  **note: disregard square brackets

 pip install django==2.0.7 
Step 5: Create a directory for all your code in the virtual env. 'mkdir [folder name]. This is the directory that will go live. In this example, we are using Django, so if you want to use the django library, you then go into the folder you have created and type 'django-admin startproject [name of project]'. Next, 'cd [name of project]' and then 'python manage.py runserver'. It will show you an IP address where you can view your project.
Starting development server at http://127.0.0.1:8000/
**To deactivate, ( Ctrl + C )  twice and then type 'deactivate'.

Step 6: Update changes made to model. Type 'python manage.py makemigrations'. Then type 'python manage.py migrate'. Now you can run your server with the updated changes :)


Comments

Popular posts from this blog

Snakes and ladders

I've started on my Python course. So far, the code has been familiar because the first few basic codes are similar to Javascript. And then modules happened. Confusion and despair! What is the world is 'if __name__ == "__main__": ' and why must I reach this section of my course on a public holiday when none of the instructors are in :( Stack overflow to the rescue, providing me a lifeline while I was drowning in a pit of serpents. I feel eternally indebted to a particular Mr Fooz.  Picture from  here From my understanding, when the Python interpreter reads a source file, it first sets the variable __name__ and then it executes all the code in the file. If that particular file that you are running(i.e. your module) is the main program, the interpreter will assign '__name__ = "__main__" '. Thereafter, any code in the aforementioned 'if' statement is run. If you have, instead, imported a module, the interpreter assigns '__name__ ...

I gotta feeling...

I've been helping a colleague with his portfolio site. He's making it retro video game themed at my suggestion. He found an interesting pixelated font called arcade classic  and used it for the headings on his page. Unfortunately, some of the letters almost overlapped, making it not quite readable. Before letter spacing I looked into typography ages ago and learnt about letter and word spacing and wondered if that was something that I could fiddle with using CSS. Turns out it is a property you can customise. I opened up Chrome Dev tools and added 3 pixels of letter spacing and it looked so much better. And there's letter spacing too, so that's pretty neat.  After letter spacing Can't say CSS is my favourite thing ever but it's always nice to learn something new in unexpected ways.

Fizzbuzz

I was today years old when I found out what fizzbuzz was. Yes, I'm late to the party. I was in an interview where the interviewer mentioned that ordinarily they would ask interviewees in for a round of fizzbuzz challenges, as I know. Actually sir, no, I don't know 👀 But he sounded so certain that I must surely know what it is that I was afraid to say anything so I did what I always do when I panic. Look right back saying not a word. I googled this mysterious fizzbuzz problem:  It looks pretty easy. I don't think he meant this actual problem, but problems like this. Because this problem is way too easy to be an actual problem someone asks in an interview. I decided to work on it for fun:  Yup. Super easy. I wish this is all I were asked in an interview 😄