DEV Community

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

Posted on • Edited 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 ๐Ÿค—