Start Here

Thanks for buying an Early Access copy of CPython Internals: Your Guide to the Python 3 Interpreter and supporting Real Python! You’re awesome!

You can access additional resources, such as sample code and errata, at the following URL:

Happy Pythoning!


How will I receive updates?#

During the Early Access phase we’re releasing updates to the book based on reader feedback. You’ll always find the latest version available for download here on

How can I give feedback on the book?#

At the end of each section of the book you’ll find a “magical” feedback link. Clicking the link takes you to an online feedback form where you can share your thoughts with us.

We welcome any and all feedback or suggestions for improvement you may have.

Please feel free to be as terse or detailed as you see fit. All feedback is stored anonymously, but you can choose to leave your name and contact information so we can follow up or mention you on our “Thank You” page.

We use a different feedback link for each section, so we’ll always know which part of the book your notes refer to.

Thank you for helping us make this book an even more valuable learning resource for the Python community.

Guy Dubost on June 2, 2020

No you guys are awesome. Keep up

bjornfick77 on June 3, 2020

i think it’s a bit too advanced for me but here goes :-) love this site and the content/materials are great

Peter on June 3, 2020

Just started working my way through the book at the moment. The part about setting up Visual Studio might be worth re-jigging, I got myself stuck when trying to compile only to find a short while later finding I need to run the bat file.

Loving the book so far though, already learned a fair bit, just reading the grammar section, i had no idea try had an else clause (never mind even knowing where to look to find the grammar).

Noah Altunian on June 3, 2020

I’ve read Real Python’s posts on the CPython source code. This is now taking it to the next level, and I couldn’t be more excited. 🙏

aamelgar on June 4, 2020

Do we get a physical copy?

Robert Armenta on June 4, 2020

I agree with aamelgar. Like the Python Tricks book (Which is awesome!) I would like a physical copy as well.

zeliwipin on June 4, 2020

it looks nice i will read it and keep you posted

drawdoowmij on June 5, 2020

Excited to get started on this book!

Ricky White RP Team on June 5, 2020

The Paperback version will be released at a later date when the book is out of early access. We’ll announce when it is available to order.

doni12voip on June 16, 2020

I need the Paperback please

Nick Dat Le on June 25, 2020

Great work Anthony et al! Just the resource I’ve been looking for :)

Curtis Bucher on July 13, 2020

If we already payed for the prerelease, will we get the paperback when it comes out?

Dan Bader RP Team on July 13, 2020

Once we’re out of Early Access with the digital edition we are going to get a paperback version ready for publishing. When the paperback version is released it will be a separate purchase from Amazon or your favorite local book store.

dgrunwal on Aug. 15, 2020

Will work through the book and give comments and learn CPython of course.

seyoung on Aug. 18, 2020

Thank you. It was a pleasant read. I’d be happy to read more on different modules in the standard library :)

Mauricio on Sept. 12, 2020

Hi. Hate to be the first one. I’m stuck. I cannot get to call ./configure properly. Have done autoreconf -i first and still nothing. Error is:

checking for git... found
configure: error: cannot run /bin/bash ./config.sub

Also, I am on WSL 2, can’t say if it’s part of the issue. When I run make -j2 -s I get error no targets. Anyone help?

Mauricio on Sept. 13, 2020

UPDATE: I have done some progress. Doing dos2unix ** helped ./configure do its thing.

However, it doesn’t make the Makefile as ./configure still errors out. It says, at the very end of the ./configure process "mv: cannot stat 'config.c': No such file or directory"

Will continue trying, however, any help is appreciated.

Mauricio on Sept. 13, 2020

EDIT to UPDATE: I also had to pass the build type in order to ./configure commence its process, --build=i689-pc-linux

Mauricio on Sept. 13, 2020

SOLUTION: I deleted everything and cloned it again. This time, I used the force (-f) option when doing the git checkout. Then, regular ./configure and make -j8 succeeded.

You must own this product to join the conversation.