The Real Python Podcast

Real Python
undefined
5 snips
Mar 11, 2022 • 1h 3min

Tools for Setting Up Python on a New Machine

There are many ways to get Python installed on your computer. If you were going to start fresh, what tools would you use? What if you need to manage multiple versions of Python and virtual environments? What about all the additional tools that make your coding workflow complete? This week on the show, Calvin Hendryx-Parker is here to talk about bootstrapping your Python environment. Calvin is the co-founder and CTO of Six Feet Up and a Python Web Conference co-organizer. As a consultant, Calvin has set up countless machines to run Python. He configures environments that can scale from in-office projects to distributed cloud-based applications. We cover tools for installing Python, managing multiple language versions, and configuring virtual environments. Calvin talks about setting up command-line applications in isolated environments. We also discuss traveling with Python on an iPad. Course Spotlight: Start Managing Multiple Python Versions With pyenv In this step-by-step course, you’ll learn how to install multiple Python versions and switch between them, including project-specific virtual environments, with ease with pyenv. Topics: 00:00:00 – Introduction 00:02:42 – Giving talks at IndyPy 00:03:12 – Calvin’s talk “Half a Dozen Ways to Fail at Python” 00:07:41 – Advice on installing Python using Homebrew and pyenv 00:11:48 – The consistency of using a Docker container 00:18:49 – Creating virtual environments and installing packages 00:21:51 – Sponsor: ScoutAPM 00:22:38 – Creating requirements.txt files and moving from pipenv to piptools 00:30:54 – Paying attention to security issues and your software supply chain 00:34:19 – The goal of making a repeatable developer build experience 00:39:30 – Video Course Spotlight 00:40:47 – Using pipx to set up CLI code tools 00:44:52 – Using bpytop to monitor performance 00:46:41 – Tools for using Python on the iPad 00:53:06 – Python Web Conference 00:56:08 – Moving your dotfiles across multiple machines with chezmoi 01:02:22 – Thanks and goodbye Show Links: Half a Dozen Ways to Fail at Python – YouTube calvinhp/2019 WaysToFailAtPython – GitHub Calvin Hendryx Parker - Bootstrapping your Local Python Environment – YouTube calvinhp/2021 BootstrappingYourLocalPythonEnvironment – GitHub Six Feet Up: Python web application development and cloud management services Homebrew: The Missing Package Manager for macOS (or Linux) Chocolatey - The package manager for Windows Python 3 Installation & Setup Guide – Real Python Your Python Coding Environment on Windows: Setup Guide - Real Python Managing Multiple Python Versions With pyenv – Real Python A quick-and-dirty guide on how to install packages for Python Why you should use “python -m pip” pypa/pipenv: Python Development Workflow for Humans. pip-tools · PyPI safety · PyPI Production-ready Docker packaging for Python developers pipx: Install and Run Python Applications in Isolated Environments bpytop: Resource monitor that shows usage and stats - PyPI Episode #272 The tools episode - Python Bytes Podcast Road Warrior Developer – YouTube 5 Ways To Use Python On An iPad Advanced Visual Studio Code for Python Developers – Real Python chezmoi: Manage your dotfiles across multiple diverse machines, securely Python Web Conference 2022 — Python Web Conf 2022 Level up your Python skills with our expert-led courses: A Beginner's Guide to pip Installing Python on Windows, macOS, and Linux Start Managing Multiple Python Versions With pyenv Support the podcast & join our community of Pythonistas
undefined
Mar 4, 2022 • 53min

Defining Optional Arguments and Moving Beyond "Beginner" Python

How do you define Python functions that accept optional arguments or default values? Are you wondering how to go beyond being a beginner with Python? This week on the show, Christopher Trudeau is here, and he’s brought another batch of PyCoder’s Weekly articles and projects. Christopher shares a Real Python article, “Defining Python Functions With Optional Arguments.” We talk about function flexibility, specifying default values, and using args & kwargs. We discuss resources for a Python beginner to move beyond the basics and become more competent. Both of us share our experiences moving past these hurdles. We cover several other articles and projects from the Python community, including a news roundup, ten tools you may have wished you knew when you started working with Python, Python’s zipfile for manipulating your zip files efficiently, how one company optimized Python API server code by 100x, a dependency-free Python library for downloading YouTube videos, and how to use Python on the command line with other shell commands. Course Spotlight: Defining Python Functions With Optional Arguments In this video course, you’ll learn about Python optional arguments and how to define functions with default values. You’ll also learn how to create functions that accept any number of arguments using args and kwargs. Topics: 00:00:00 – Introduction 00:03:08 – Django Project Reformats Entire Codebase With Black 00:03:53 – PEP 673: Self Type Was Accepted 00:05:16 – PEP 654 Accepted: Exception Groups 00:07:45 – Upcoming Python Feature PEPs 00:10:01 – Defining Python Functions With Optional Arguments 00:15:12 – Sponsor: CData Software 00:15:53 – 10 Tools I Wish I Knew When I Started Working With Python 00:23:22 – How We Optimized Python API Server Code 100x 00:29:47 – Python’s zipfile: Manipulate Your ZIP Files Efficiently 00:32:47 – Video Course Spotlight 00:33:59 – How Do I Go From Being a Beginner to Competent in Python? 00:47:02 – pytube: Dependency-Free Python Library for Downloading – YouTube Videos 00:49:30 – pz: Use Python on the Command Line With Other Shell Commands 00:52:23 – Thanks and goodbye News: Django Project Reformats Entire Codebase With Black – Related discussion on Hacker News. PEP 673: Self Type Was Accepted – This PEP introduces a simple and intuitive way to annotate methods that return an instance of their class. This behaves the same as the TypeVar-based approach specified in PEP 484 but is more concise and easier to follow. Related Twitter thread by core dev Raymond Hettinger. PEP 654 Accepted: Exception Groups – New standard for grouping exceptions together Upcoming Python Feature PEPs – “These PEPs are a great way of getting the freshest info about what might be included in the upcoming Python releases. So, in this article we will go over all the proposals that are going to bring some exciting new Python features in a near future!” Topics: Defining Python Functions With Optional Arguments – Learn about Python optional arguments and how to define functions with default values. You’ll also see how to create functions that accept any number of arguments using *args and **kwargs. 10 Tools I Wish I Knew When I Started Working With Python – Learn about how venvs, flake8, black, isort, pytest, commitizen, semantic-release, pre-commit hooks, and Github Actions work together! How We Optimized Python API Server Code 100x – Tricks we used to speed up calls to our analytical API written in Python: asyncio, SQLAlchemy, asyncpg, Cython plugins, improved data structures, and replaced some Pandas with NumPy. Python’s zipfile: Manipulate Your ZIP Files Efficiently – In this guided tutorial, you’ll learn how to manipulate ZIP files using Python’s zipfile module from the standard library. Through hands-on examples, you’ll learn how to read, write, compress, and extract files from your ZIP files quickly. How Do I Go From Being a Beginner to Competent in Python? Projects: pytube: Dependency-Free Python Library for Downloading YouTube Videos pz: Use Python on the Command Line With Other Shell Commands Additional Links: Fluent Python, 2nd Edition Python Distilled Intermediate to Advanced resources - Python resources for everybody The Flask Mega-Tutorial Part I: Hello, World! Level up your Python skills with our expert-led courses: Defining Python Functions With Optional Arguments Defining and Calling Python Functions Writing Beautiful Pythonic Code With PEP 8 Support the podcast & join our community of Pythonistas
undefined
Feb 25, 2022 • 59min

OAuth 2 and Authentication Choices for Your Python Project

Have you thought about what authentication system you want to use for your Python project? Should you use an existing Python library or a third-party service? This week on the show, Dan Moore is here to talk about authentication systems and OAuth 2. Dan is the head of developer relations at FusionAuth. He shares advice about setting up an authentication system, setting up device grants, using social login, and addressing privacy issues. Dan also provides multiple resources to learn much more about the topic. Course Spotlight: Using Google Login With Flask In this course, you’ll create a Flask application that lets users sign in using their Google login. You’ll learn about OAuth 2 and OpenID Connect and also find out how to implement some code to handle user session management. Topics: 00:00:00 – Introduction 00:01:58 – What is FusionAuth? 00:03:13 – What is the single-responsibility principle? 00:04:14 – Thinking about setting up an authentication system 00:08:42 – Background on OAuth 00:13:26 – Device grants 00:19:23 – Using another provider’s login and addressing privacy issues 00:28:39 – Video Course Spotlight 00:29:53 – Resources to learn more about privacy and identity 00:32:39 – Setting up an OAuth system 00:35:59 – DIY authentication pitfalls and hashing passwords 00:42:57 – Staying on top of updates and social engineering 00:51:29 – Resources for learning more about OAuth 00:54:30 – What are you excited about in the world of Python? 00:55:42 – What do you want to learn next? 00:56:49 – Final words and social connections 00:57:47 – Thanks and goodbye Show Links: FusionAuth - Auth. Built for Devs, By Devs RFC 6749 - The OAuth 2.0 Authorization Framework RFC 6750 - The OAuth 2.0 Authorization Framework: Bearer Token Usage Single-responsibility principle - Wikipedia oauthlib · PyPI Final: OpenID Connect Core 1.0 International Association of Privacy Professionals IDPro: Identity Professionals Have I Been Pwned: Check if your email has been compromised in a data breach Hash Functions | National Institute of Standards and Technology (NIST) - Computer Security Resource Center (CSRC) Guides Overview - FusionAuth The Modern Guide to OAuth - FusionAuth Solving Identity Management in Modern Applications | SpringerLink OAuth 2 in Action Getting started — Django OAuth Toolkit 1.7.0 documentation Flask-Login — Flask-Login 0.4.1 documentation Adding social sign in to your Django web application using OAuth - FusionAuth Create a Flask Application With Google Login – Real Python Draft IETF - OAuth V2.1.04 Level up your Python skills with our expert-led courses: Django View Authorization: Restricting Access Using Google Login With Flask Deploy Your Python Script on the Web With Flask Support the podcast & join our community of Pythonistas
undefined
Feb 18, 2022 • 51min

Drawing Fractals With Python and Working With a Weather API

Have you been wanting to explore fractals and complex numbers in Python? Would you like to practice working with APIs in Python through a new project? This week on the show, Christopher Trudeau is here, and he’s taking on the task of curating new issues of PyCoder’s Weekly going forward. He’ll be joining me as a cohost every other week and bringing a fresh batch of PyCoder’s Weekly articles and projects. We discuss a Real Python article about drawing the Mandelbrot set in Python. The tutorial guides you through creating fractal art using Matplotlib and Pillow. We also share a new step-by-step project building a weather-reporting command-line interface (CLI) app. We cover several other articles and projects from the Python community, including a news roundup, a better Pygame main loop, ways to work with static and media files in Django, and a library for pleasing console output. Course Spotlight: Make a 2D Side-Scroller Game With Pygame In this step-by-step course, you’ll learn how to use Pygame. This library allows you to create games and rich multimedia programs in Python. You’ll learn how to draw items on your screen, implement collision detection, handle user input, and much more! Topics: 00:00:00 – Introduction 00:02:15 – Black, the Python Code Formatter, Is Stable 00:04:07 – Apple Removes Python 2.7 in macOS Monterey 12.3 00:06:36 – GitHub Survey on Languages and More Developer Things 00:10:14 – CPython 3.11.0a5 Is Available 00:11:48 – Django Security Releases Issued: 4.0.2, 3.2.12, and 2.2.27 00:12:43 – A Better Pygame Main Loop 00:21:22 – Sponsor: CData Software 00:22:04 – Draw the Mandelbrot Set in Python 00:29:12 – The Fastest Way to Read a CSV in Pandas 00:35:16 – Video Course Spotlight 00:36:26 – Working With Static and Media Files in Django 00:41:42 – Raining Outside? Build a Weather CLI App With Python 00:48:15 – konsole: Readable, Pleasing Console Output 00:50:27 – Thanks and Goodbye News: Black, the Python Code Formatter, Is Stable – The popular Python autoformatter Black is finally non-beta software. Related discussion on Hacker News and Black’s stability policy doc. Apple Removes Python 2.7 in macOS Monterey 12.3 – “Python 2.7 was removed from macOS in this update. Developers should use Python 3 or an alternative language instead.” Also see the related discussion on Hacker News. GitHub Survey on Languages and More Developer Things – JavaScript retains the top spot, Python keeps second place gained in 2019 over Java, which holds in third. TypeScript continues fourth after racing up tenth in 2017 to fourth in 2020. JavaScript + TypeScript seem to put that way ahead in terms of amount of code on GitHub. CPython 3.11.0a5 Is Available – “We needed to tame some angry buildbots, but after a small fight, we won with just some scratches! Here you have a shiny new alpha release: Python 3.11.0a5.” Django Security Releases Issued: 4.0.2, 3.2.12, and 2.2.27 – Includes fixes for a possible XSS via debug template tag and a denial-of-service possibility in file uploads. Articles: A Better Pygame Main Loop – Improving your game’s main loop for smoother gameplay that takes less battery power: “Now your players’ laptops run cool while playing, and the graphics don’t have ugly tearing artifacts any more!” Draw the Mandelbrot Set in Python – In this tutorial, you’ll visualize the famous Mandelbrot set using Python’s Matplotlib and Pillow libraries. You’ll learn how to draw the fractal in black and white, grayscale, and color. The Fastest Way to Read a CSV in Pandas – This article covers pandas’ default CSV reading, the faster and more parallel CSV reader introduced in v1.4, and a different approach that can make things even faster. Working With Static and Media Files in Django – A look at how to work with static and media files in a Django project, locally and in production. Projects: Raining Outside? Build a Weather CLI App With Python – In this tutorial, you’ll write a nicely formatted Python CLI app that displays information about the current weather in any city that you provide the name for. konsole: Readable, Pleasing Console Output Additional Links: Make a 2D Side-Scroller Game With Pygame – Real Python Using Pygame to Build an Asteroids Game in Python – Real Python Deciphering Glyph :: Nice Animations with Twisted and PyGame pygame 4000 book by pygame Where’s your bottleneck? CPU time vs wallclock time Storing Django Static and Media Files on Amazon S3 | TestDriven.io OpenWeatherMap API guide - OpenWeatherMap Level up your Python skills with our expert-led courses: Using Pygame to Build an Asteroids Game in Python Getting Started With Django: Building a Portfolio App Make a 2D Side-Scroller Game With PyGame Support the podcast & join our community of Pythonistas
undefined
Feb 11, 2022 • 50min

Improving Your Django and Python Developer Experience

How often have you thought about your Developer Experience (DX)? How do you improve your workflow, find documentation, and simplify code formatting? This week on the show, Adam Johnson is here to talk about his new book, “Boost Your Django DX.” Adam provides advice on improving your developer experience, specifically inside Django and within Python. We discuss tools to simplify code formatting and linting. Adam shares a couple of his own Django tools designed to simplify development and keep your projects updated. He also covers documentation resources for finding answers quickly. Course Spotlight: Django View Authorization: Restricting Access This course covers how to restrict your web pages to users with different roles through Django view authorization. You’ll learn about HttpRequest.user objects, decorators that authenticate views, and ways to notify your users with the Django messages framework. Topics: 00:00:00 – Introduction 00:01:53 – The Django Project Technical Board 00:04:08 – Change in the release cadence for Django 00:06:08 – Kaizen, continous improvement, and helping others improve 00:10:23 – Common ways to improve developer experience 00:14:06 – Sponsor: Scout APM 00:14:54 – Developer documentation tools 00:20:24 – Bang shortcuts when searching with DuckDuckGo 00:22:37 – Who is the intended audience for the book? 00:23:33 – Managing secrets and giving general advice 00:26:49 – Writing books to fill in the gaps 00:29:12 – Video Course Spotlight 00:30:24 – Topics for the blog, favicons, and type hints 00:39:22 – What are your recent Django-related projects? 00:42:05 – Sources for Django news 00:45:01 – What are you excited about in the world of Python? 00:45:59 – What do you want to learn next? 00:47:43 – Shout-outs and social connections 00:48:43 – Thanks and goodbye Show Links: Adam Johnson’s Home Page Boost Your Django DX “Boost Your Django DX” Released - Adam Johnson Django Software Foundation | Django Kaizen - Wikipedia black: The Uncompromising Code Formatter · PyPI isort: isort your imports, so you don’t have to. Flake8: Your Tool For Style Guide Enforcement — flake8 4.0.1 documentation DevDocs API Documentation DuckDuckGo !Bang Django Chat | Adam Johnson - Boost Your Django DX Podcast.__init__ - Improve Your Productivity By Investing In Developer Experience How to Add a Favicon to Your Django Site - Adam Johnson Favicon Generator for perfect icons on all browsers Introducing django-browser-reload: Automatically Reload Your Browser in Development - Adam Johnson django-browser-reload · PyPI django-upgrade · PyPI pyupgrade · PyPI Django News Learn more about Ableton Push | Ableton Level up your Python skills with our expert-led courses: Django View Authorization: Restricting Access Host Your Django Project on Heroku How to Set Up a Django Project Support the podcast & join our community of Pythonistas
undefined
Feb 4, 2022 • 59min

Manipulating and Analyzing Audio in Python

Would you like to experiment with analyzing or manipulating audio with Python? This week on the show, we have Braden Riggs from DolbyIO to discuss extracting audio features and Python libraries for reshaping audio. Braden shares techniques from his recent talk at PyData Global, “Unlocking More From Your Audio Data!” We share several articles, tutorials, and Python libraries to get you started working with audio. We begin with a quick introduction to audio digitization and feature extraction. After discussing modifying audio files, we share tools and techniques for exploring audio analysis through data science. Braden talks about speech-to-text conversion, sentiment analysis, and Natural Language Toolkit (NLTK). He also shares a valuable collection of audio technology resources for developers. Course Spotlight: Playing and Recording Sound in Python In this course, you’ll learn about libraries that can be used for playing and recording sound in Python, such as PyAudio and python-sounddevice. You’ll also see code snippets for playing and recording sound files and arrays, as well as for converting between different sound file formats. Topics: 00:00:00 – Introduction 00:02:46 – What is Dolby IO? 00:05:08 – Audio and data science background 00:08:17 – Digital audio basics 00:12:07 – Audio feature extraction 00:18:31 – Sponsor: Snyk - The Big Fix 00:19:17 – PyAudioAnalysis and processing audio files with Python 00:26:16 – Feature extraction and audio analysis talk at PyData Global 00:32:33 – Jupyter notebook of presentation and DolbyIO awesome audio list 00:34:13 – librosa - package for music analysis 00:37:55 – Video Course Spotlight 00:39:11 – Speech to text and NLTK 00:54:28 – What are you excited about in the world of Python? 00:55:49 – What do you want to learn next? 00:56:53 – Shout outs and social connections 00:58:04 – Thanks and goodbye Show Links: Dolby.io - High-fidelity Audio and Video For All Digital Audio Basics: Audio Sample Rate and Bit Depth Audio Feature Extraction pyAudioAnalysis Wiki Audio Handling Basics: Process Audio Files In Command-Line or Python | HackerNoon pydub: Manipulate audio with a simple and easy high level interface FFmpeg: Complete, cross-platform solution to record, convert and stream audio and video Improving Automated Ad Insertion with Audio Analysis at PyData Global 2021 - Dolby.io Demo notebooks presented at PyData Global 2021 for “Unlocking more from your audio data” librosa: Python package for music and audio analysis NLTK: The Natural Language Toolkit Documentation Natural Language Processing With Python’s NLTK Package – Real Python DolbyIO/awesome-audio: A curated list of awesome audio technology resources for developers PyConDE & PyData Berlin 2022 | PyCon.DE & PyData Berlin, 2022 Vue.js Flutter - Build apps for any screen Level up your Python skills with our expert-led courses: Learn Text Classification With Python and Keras The pandas DataFrame: Working With Data Efficiently Playing and Recording Sound in Python Support the podcast & join our community of Pythonistas
undefined
Jan 28, 2022 • 1h 7min

What Is a JIT and How Can Pyjion Speed Up Your Python?

How can you can speed up Python? Have you thought of using a JIT (Just-In-Time Compiler)? This week on the show, we have Real Python author and previous guest Anthony Shaw to talk about his project Pyjion, a drop-in JIT compiler for CPython 3.10. Anthony has been working on Pyjion over the past year and recently released version 1.0. He talks about how he took over the project from Brett Cannon and Dino Viehland. He covers the background on compilers and assembly that he needed to take on this project. We discuss where a tool like this can speed up your Python code, and we consider alternative solutions. We also talk about his desire to make the project as deeply compatible with Python code as possible. Anthony talks about how his dive into writing the CPython Internals book led him into the project. We talk about what type of developer would benefit from exploring the book. We also cover his recent Real Python article, titled “Advanced Visual Studio Code for Python Developers.” It’s an excellent resource that VS Code users should bookmark to revisit as they grow with the tool. Spotlight: CPython Internals Book: Your Guided Tour Through the Python 3 Interpreter Unlock the inner workings of the Python language, compile the Python interpreter from source code, and participate in the development of CPython. Topics: 00:00:00 – Introduction 00:02:15 – Cloud Developer Advocate at Microsoft 00:04:57 – Pyjion, a drop-in JIT compiler for CPython 00:07:52 – PyCon 2020 & 2021 talks and wanting to take on the project 00:12:46 – How Pyjion uses .NET 6 00:17:32 – Trying out Pyjion functionality online 00:21:43 – Sponsor: Honeybadger 00:22:28 – Portability of projects using Pyjion 00:29:55 – Focus on compatibility with Python code 00:33:07 – Choosing to make it based on Python 3.10 00:37:45 – What would be prerequisites to work on the project? 00:40:40 – Other ways to help with project 00:44:34 – CPython Internals: Who is the book for? 00:49:46 – What resources do you need to work through the book? 00:52:04 – Spotlight: CPython Internals Book 00:53:21 – Do you use an IDE or code editor? 00:56:12 – Why did you decide to write the book? 00:57:12 – Advanced Visual Studio Code for Python Developers 01:03:20 – What are you excited about in the world of Python? 01:04:03 – What do you want to learn next? 01:05:33 – Thanks and goodbye Show Links: Pyjion - A JIT for Python based upon CoreCLR Pyjion main documentation live.trypyjion.com Anthony Shaw - Why is Python slow? - YouTube Restarting Pyjion, a general purpose JIT for Python- is it worth it? - YouTube Common Language Runtime (CLR) overview - .NET | Microsoft Docs Writing Python Extensions in Assembly Beginning x64 Assembly Programming | SpringerLink Pyston | Python Performance PyPy facebookincubator/cinder: Instagram’s performance oriented fork of CPython. Welcome to Hypothesis! — Hypothesis 6.36.0 documentation CPython Internals Book – Real Python Advanced Visual Studio Code for Python Developers – Real Python vscode-pets: Adds playful pets 🦀🐱🐶 in your VS Code window What’s New In Python 3.11 — Python 3.11.0a4 documentation Compilers: Principles, Techniques, and Tools (Dragon Book) Level up your Python skills with our expert-led courses: Finding the Perfect Python Code Editor Debugging in Python With pdb Looping With Python enumerate() Support the podcast & join our community of Pythonistas
undefined
Jan 21, 2022 • 59min

Designing for Users and Building a Social Network With Django

Are you looking for a project to practice your Django skills? Designing the fundamental interactions of a social network is an instructive way to explore models and relationships while learning advanced Django skills. This week on the show, we talk with previous guest Martin Breuss about his new four-part series, “Build a Social Network With Django”. Martin talks about the design process and ways to include user-focused features. He shares a handy CSS library to make your front end look modern with minimal effort. We digress into a discussion of personal vs professional use of social networks. We also talk about the additional Real Python resources to help you build out the rest of your project. Course Spotlight: How to Set Up a Django Project In this course, you’ll learn the necessary steps that you’ll need to take to set up a new Django project. You’ll learn the basic setup for any new Django project, which needs to happen before programming the specific functionality of your project. Topics: 00:00:00 – Introduction 00:01:46 – Build a Social Network with Django series 00:04:05 – Setting project scope and constraints 00:09:09 – Why use Django for this project? 00:12:23 – Learning through errors 00:15:29 – Sponsor: Honeybadger 00:16:14 – Models and relationships 00:19:05 – Implementing a post-save hook 00:23:17 – Django front end with the Bulma CSS framework 00:28:42 – Templates and profile pages 00:31:03 – Following, posts, and thoughts on user-centric features 00:37:18 – Personal and professional use of social media 00:48:03 – Setting up redirects 00:49:08 – Video Course Spotlight 00:50:19 – Additional Real Python resources for Django, including a Learning Path 00:53:07 – What would you add if this were a portfolio project? 00:54:14 – What are you excited about in the world of Python? 00:56:36 – What do you want to learn next? 00:57:54 – Thanks and goodbye Show Links: Build a Social Network With Django – Part 1 – Real Python Build a Django Front End With Bulma – Part 2 – Real Python Build and Handle POST Requests in Django – Part 3 – Real Python Build and Submit HTML Forms With Django – Part 4 – Real Python Django for Web Development (Learning Path) – Real Python Episode #87: Building a Content Aggregator and Working With RSS in Python – The Real Python Podcast Episode #4: Learning Python Through Errors – The Real Python Podcast The Flask Mega-Tutorial Part I: Hello, World! - miguelgrinberg.com Bulma: Free, open source, and modern CSS framework based on Flexbox Writing your first Django app, part 1 | Django documentation Get Started With Django Part 1: Build a Portfolio App – Real Python Get Started With Django Part 2: Django User Management – Real Python Tweetbot 6 for iOS 300-page iPhone bill - Wikipedia ArcGIS API for Python | ArcGIS Developer Level up your Python skills with our expert-led courses: Getting Started With Django: Building a Portfolio App Host Your Django Project on Heroku How to Set Up a Django Project Support the podcast & join our community of Pythonistas
undefined
Jan 14, 2022 • 51min

Launching Python, Virtual Environments, and Locking Dependencies With Brett Cannon

Would you like a simple command to launch your Python programs using the newest version of the language installed on your machine? This week on the show, we continue our conversation with Brett Cannon. Brett discusses his project, the Python Launcher for Unix. We dive into Brett’s workflow to set up projects, virtual environments, and prepare for distribution. He shares some of the tools he employs and reasons for keeping things simple. We also talk about PEP 665, which specifies a file format to list an application’s Python package installation requirements. Brett shares why he co-authored the PEP and a bit of the community’s reaction. It leads to a deeper conversation about going beyond ‘requirements.txt’ to lock files. Course Spotlight: Data Visualization Interfaces in Python With Dash In this course, you’ll learn how to build a dashboard using Python and Dash. Dash is a framework for building data visualization interfaces. It helps data scientists build fully interactive web applications quickly. Topics: 00:00:00 – Introduction 00:01:43 – Python Launcher for Unix 00:09:36 – Hiding a virtual environment directory 00:13:30 – Sponsor: Scout APM 00:14:17 – Environment managers and being an editor vs an IDE person 00:17:32 – PEP 665, lock files, and Brett’s dependency workflow 00:20:56 – The hurdles of source distributions and version control repositories 00:25:07 – Drawbacks of requirements files and standardizing lock files 00:28:19 – Why PEP 665 is controversial and the changes to setuptools 00:33:48 – Video Course Spotlight 00:35:16 – Are these examples of growing pains? 00:37:51 – Unfair comparisons to packaging in Rust or other languages 00:42:35 – What are you excited about in the world of Python? 00:43:54 – What do you want to learn next? 00:49:23 – Thanks and goodbye Show Links: Introducing the Python Launcher for Unix brettcannon/python-launcher: Python launcher for Unix Python Extension for VSCode Why use Flit? — Flit 3.5.1 documentation pip-tools: A set of tools to keep your pinned Python dependencies fresh. PEP 665 – A file format to list Python dependencies for reproducibility of an application | Python.org venv — Creation of virtual environments — Python 3.10.1 documentation virtualenvwrapper · PyPI pdm - Python Development Master · PyPI pyflow - Streamlines working with Python projects and files · PyPI pipenv · PyPI Thoughts on where tools fit into a workflow What to do when you botch a release on PyPI Python Virtual Environments: A Primer – Real Python Why you shouldn’t invoke setup.py directly | Paul Ganssle python-wasm: Build scripts and configuration for building CPython for Emscripten Pyodide — A Python distribution for the browser and Node.js based on WebAssembly WebAssembly Programming Rust, 2nd Edition Brett Cannon on Twitter: “PEP 665 got rejected today 😞” Level up your Python skills with our expert-led courses: A Beginner's Guide to pip Data Visualization Interfaces in Python With Dash Working With Pipenv Support the podcast & join our community of Pythonistas
undefined
Jan 7, 2022 • 59min

Continuing to Unravel Python's Syntactic Sugar With Brett Cannon

A year ago, we had Brett Cannon on the show to discuss his blog series about unravelling Python’s syntactic sugar. Brett has written 15 more entries in the series, and he returns to the show this week to continue our conversation. We dive into unravelling ‘async’ and ‘await’ statements and their relationship with Python’s generators. While working through the series, he has uncovered some issues lying under the surface of CPython. We discuss a couple of these discoveries and how the core developers resolved them. Brett was recently re-elected to the Python Steering Council, and he talks about how the current direction of the council is shifting. We also discuss how Brett uses Twitter polls to gauge community sentiment and factors it into development decisions. This conversation covered so many topics that we split it into two episodes. Next week’s episode will continue our discussion. Course Spotlight: Speed Up Python With Concurrency Learn what concurrency means in Python and why you might want to use it. You’ll see a simple, non-concurrent approach and then look into why you’d want threading, asyncio, or multiprocessing. Topics: 00:00:00 – Introduction 00:01:54 – Python Steering Council Reelection 00:06:06 – Python Extension for VSCode and the Language Server Protocol (LSP) 00:10:38 – Using twitter polls to gauge sentiment 00:19:19 – Sponsor: Honeybadger 00:20:04 – Unravelling Python’s syntactic sugar series 00:25:30 – The desugar GitHub repo and unearthing problems in CPython 00:29:48 – Why have __iter__() for an iterator? 00:32:47 – Is discovering and showcasing these “issues” stressful? 00:35:19 – A reverse chronology of some Python features 00:38:34 – How the heck does async/await work in Python 00:51:29 – Video Course Spotlight 00:52:54 – Using “spam” vs “foo” and metasyntactic variables 00:57:30 – Goodbye Show Links: 2022 Python Steering Council Election Results - Python.org Official Page for Language Server Protocol Brett Cannon on Twitter: “If I were creating a protocol/interface for a spammy object, what naming convention would you expect?” Episode #88: Discussing Type Hints, Protocols, and Ducks in Python – The Real Python Podcast Brett Cannon - Twitter Poll: “Which of these ‘pip install’ flags to you usually specify?” Episode #47: Unraveling Python’s Syntax to Its Core With Brett Cannon – The Real Python Podcast Unravelling ‘break’ and ‘continue’ Unravelling ‘for’ statements GitHub - brettcannon/desugar: Unravelling Python source code A reverse chronology of some Python features What Color is Your Function? – journal.stuffwithstuff.com Unravelling ‘async’ and ‘await’ How the heck does async/await work in Python 3.5? Episode #39: Generators, Coroutines, and Learning Python Through Exercises – The Real Python Podcast How to Use Generators and yield in Python – Real Python Async IO in Python: A Complete Walkthrough – Real Python Level up your Python skills with our expert-led courses: For Loops in Python (Definite Iteration) Python Generators 101 Speed Up Python With Concurrency Support the podcast & join our community of Pythonistas

The AI-powered Podcast Player

Save insights by tapping your headphones, chat with episodes, discover the best highlights - and more!
App store bannerPlay store banner
Get the app