DEV Community

Cover image for VSCode & GitHub Codespaces for my Python playground
Giorgio Boa for This is Learning

Posted on • Updated on

VSCode & GitHub Codespaces for my Python playground

Today I did some experiments with Python, I decided to do this activity with GitHub Codespaces without installing Python on my machine.

Steps

GitHub repository

I started by creating my repository on GitHub and I named it python-playground.

GitHubRepo

Clone repository

I cloned the local repository by typing the command:
git clone git@github.com:gioboa/python-playground.git
in the terminal.
I took the URL of the repository from GitHub, you can find it by pressing the Code button.

GitHubCode

VSCode: Add Dev Container

Once the repository was cloned locally, via VSCode, I used the command:

Dev Containers: Add Dev Container Configuration Files...

AddCommand

To use this command you have to install the Dev Containers extension and you need to have Docker up and running in your local machine.

Run locally

With this approach (docker installed locally) you can use VSCode Dev Container feature as I described in this article 😊
Tidy up your machine with Visual Studio Code Dev Containers

Then I selected "Show All definitions"

ShowAll

I selected "Python 3"

Python

Then I selected version 3.11

PyVersion

In this step I selected the Dev Container Features

Features

VSCode will create for you this configuration file .devcontainer/devcontainer.json

// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/python
{
    "name": "Python 3",
    "image": "mcr.microsoft.com/devcontainers/python:0-3.11",
    "features": {
        "ghcr.io/devcontainers/features/python:1": {}
    }
    // Features to add to the dev container. More info: https://containers.dev/features.
    // "features": {},
    // Use 'forwardPorts' to make a list of ports inside the container available locally.
    // "forwardPorts": [],
    // Use 'postCreateCommand' to run commands after the container is created.
    // "postCreateCommand": "pip3 install --user -r requirements.txt",
    // Configure tool-specific properties.
    // "customizations": {},
    // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
    // "remoteUser": "root"
}
Enter fullscreen mode Exit fullscreen mode

First Python code

I created a simple app.py file to test if the solution works.

apppy

Push to GitHub

I pushed the local changes to GitHub via the
git push origin main command.

files

GitHub Codespaces

After sending the local changes to GitHub, I created a new GitHub Codespaces through this section.

codespaces

A new URL has opened with this screen πŸš€

CodeSpaceConfig

CodeSpaceConfig2

After the setup, which took a few minutes, I got a new instance of VSCode where I was finally able to use Python.

Starting

FullVSCode

As you can see python app.py command works like a charm. πŸ‘

And that's all... The process may seem complicated but it is very fast and intuitive.

Manage Codespaces

Inside GitHub we can manage our Codespaces: delete them, rename them and much more.

ManageCodespaces

Open

OpenWith

GitHub Codespaces pricing

Pricing

Here you can read the documentation which explains in detail the costs of the service.


πŸŽ‰ As you can see it's super easy to use this functionality and I'm so happy about it. πŸ˜„

You canΒ follow me on Twitter, where I'm posting or retweeting interesting articles.

I hope you enjoyed this article, don't forget to give ❀️.
Bye πŸ‘‹

Top comments (8)

Collapse
 
kasuken profile image
Emanuele Bartolesi

I think it’s not the right way to initialise Codespaces.
You don’t need Docker on your machine.
You can create everything online and then you can connect directly to Codespaces.

Collapse
 
gioboa profile image
Giorgio Boa • Edited

I started my journey from my local machine to use also the VSCode Dev Container feature and in this case VSCode complaints about Docker πŸ˜… if you want only Codespaces support, start everything online is a good alternative too. thanks for your feedback 😊

Collapse
 
gioboa profile image
Giorgio Boa

I added the Run locally section to explain better this concept. Thanks πŸ‘

Thread Thread
 
kasuken profile image
Emanuele Bartolesi

Ahhhhhh ok

Collapse
 
balastrong profile image
Leonardo Montini

Thank you for this step by step guide!

The Codespaces feature seems a lot interesting and the integration with VSCode makes the setup process nice and clean.

You mentioned that the initial setup took a few minutes. Now that the environment has been created is it faster to launch the codespace instance?

Collapse
 
gioboa profile image
Giorgio Boa • Edited

Yes, after the first initialisation is so much faster 😊 btw I used python but there are a ton of configurations ready to be used

Collapse
 
balastrong profile image
Leonardo Montini

Great, that's the answer I was hoping for 🀩

Thank you again!

Thread Thread
 
gioboa profile image
Giorgio Boa

It's a docker container so is really fast and preserve the "last state" of your instance πŸ€—