Date: Mon, 28 Sep 2020 21:00:00 -0400
<div class="wp-block-jetpack-markdown"><h3>Summary</h3> <p>Python is a powerful and expressive programming language with a vast ecosystem of incredible applications. Unfortunately, it has always been challenging to share those applications with non-technical end users. Gregory Szorc set out to solve the problem of how to put your code on someone else’s computer and have it run without having to rely on extra systems such as virtualenvs or Docker. In this episode he shares his work on PyOxidizer and how it allows you to build a self-contained Python runtime along with statically linked dependencies and the software that you want to run. He also digs into some of the edge cases in the Python language and its ecosystem that make this a challenging problem to solve, and some of the lessons that he has learned in the process. PyOxidizer is an exciting step forward in the evolution of packaging and distribution for the Python language and community.</p> <h3>Announcements</h3> <ul> <li>Hello and welcome to Podcast.__init__, the podcast about Python and the people who make it great.</li> <li>When you’re ready to launch your next app or want to try a project you hear about on the show, you’ll need somewhere to deploy it, so take a look at our friends over at Linode. With the launch of their managed Kubernetes platform it’s easy to get started with the next generation of deployment and scaling, powered by the battle tested Linode platform, including simple pricing, node balancers, 40Gbit networking, dedicated CPU and GPU instances, and worldwide data centers. Go to <a href="https://www.pythonpodcast.com/linode?utm_source=rss&utm_medium=rss">pythonpodcast.com/linode</a> and get a $60 credit to try out a Kubernetes cluster of your own. And don’t forget to thank them for their continued support of this show!</li> <li>This portion of Python Podcast is brought to you by Datadog. Do you have an app in production that is slower than you like? Is its performance all over the place (sometimes fast, sometimes slow)? Do you know why? With Datadog, you will. You can troubleshoot your app’s performance with Datadog’s end-to-end tracing and in one click correlate those Python traces with related logs and metrics. Use their detailed flame graphs to identify bottlenecks and latency in that app of yours. Start tracking the performance of your apps with a free trial at <a href="https://www.pythonpocast.com/datadog?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">pythonpodcast.com/datadog</a>. If you sign up for a trial and install the agent, Datadog will send you a free t-shirt.</li> <li>You listen to this show to learn and stay up to date with the ways that Python is being used, including the latest in machine learning and data analysis. For more opportunities to stay up to date, gain new skills, and learn from your peers there are a growing number of virtual events that you can attend from the comfort and safety of your home. Go to <a href="https://www.pythonpodcast.com/conferences?utm_source=rss&utm_medium=rss">pythonpodcast.com/conferences</a> to check out the upcoming events being offered by our partners and get registered today!</li> <li>Your host as usual is Tobias Macey and today I’m interviewing Gregory Szorc about his work on PyOxidizer, a revolutionary new approach to building and distributing self-contained Python applications</li> </ul> <h3>Interview</h3> <ul> <li>Introductions</li> <li>How did you get introduced to Python?</li> <li>Can you start by giving an overview on the shortcomings of the current state of the art for distributing Python projects, both for deployment and end-user consumption?</li> <li>What is PyOxidizer and what motivated you to create it?</li> <li>How does PyOxidizer differ from projects such as CxFreeze, Py2Exe, or Shiv?</li> <li>What are the characteristics of CPython and the packaging ecosystem that make it so challenging to easily distribute self-contained applications?</li> <li>For someone using PyOxidizer, what is their workflow for building an executable that they can share with end users? <ul> <li>What are some of the edge cases or special considerations that they need to be aware of?</li> </ul> </li> <li>How is PyOxidizer implemented? <ul> <li>How has the design or direction evolved since you first began working on it?</li> </ul> </li> <li>From your experience in working on PyOxidizer, what changes would you like to see in the Python language or the CPython reference implementation?</li> <li>What are some of the most interesting, unexpected, or challenging lessons that you have learned while working on PyOxidizer?</li> <li>What do you have planned for the future of PyOxidizer?</li> <li>What are the ways that listeners can contribute to PyOxidizer?</li> </ul> <h3>Keep In Touch</h3> <ul> <li><a href="https://gregoryszorc.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Website</a></li> <li><a href="https://github.com/indygreg?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">indygreg</a> on GitHub</li> </ul> <h3>Picks</h3> <ul> <li>Tobias <ul> <li><a href="https://www.santana.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Carlos Santana</a></li> </ul> </li> <li>Gregory <ul> <li><a href="https://www.nytimes.com/wirecutter/reviews/best-home-air-quality-monitor/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Home Air Quality Monitor</a></li> </ul> </li> </ul> <h3>Closing Announcements</h3> <ul> <li>Thank you for listening! Don’t forget to check out our other show, the <a href="https://feeds.fireside.fm/pythonpodcast/rss">Data Engineering Podcast</a> for the latest on modern data management.</li> <li>Visit the <a href="https://www.pythonpodcast.com?utm_source=rss&utm_medium=rss">site</a> to subscribe to the show, sign up for the mailing list, and read the show notes.</li> <li>If you’ve learned something or tried out a project from the show then tell us about it! Email <a href="mailto:hosts@podcastinit.com">hosts@podcastinit.com</a>) with your story.</li> <li>To help other people find the show please leave a review on <a href="https://itunes.apple.com/us/podcast/podcast.-init/id981834425?mt=2&uo=6&at=&ct=&utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">iTunes</a> and tell your friends and co-workers</li> <li>Join the community in the new Zulip chat workspace at <a href="https://www.pythonpodcast.com/chat?utm_source=rss&utm_medium=rss">pythonpodcast.com/chat</a></li> </ul> <h3>Links</h3> <ul> <li><a href="https://pyoxidizer.readthedocs.io/en/stable/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">PyOxidizer</a></li> <li><a href="https://www.mercurial-scm.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Mercurial</a> <ul> <li><a href="https://www.pythonpodcast.com/episode-60-mercurial-with-augie-fackler/?utm_source=rss&utm_medium=rss">Podcast Episode</a></li> </ul> </li> <li><a href="https://www.mozilla.org/en-US/about/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Mozilla</a></li> <li><a href="https://virtualenv.pypa.io/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Virtualenv</a></li> <li><a href="https://pip.pypa.io/en/stable/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Pip</a></li> <li><a href="https://www.docker.com/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Docker</a></li> <li><a href="https://www.py2exe.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Py2Exe</a></li> <li><a href="https://cx-freeze.readthedocs.io/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">CXFreeze</a></li> <li><a href="https://beeware.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Beeware</a></li> <li><a href="https://shiv.readthedocs.io/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Shiv</a></li> <li><a href="https://github.com/jordansissel/fpm?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">FPM</a></li> <li><a href="https://python-build-standalone.readthedocs.io/en/latest/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Python Build Standalone</a></li> <li><a href="https://docs.python.org/3/library/importlib.html?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Importlib</a></li> <li><a href="https://www.rust-lang.org/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Rust</a></li> <li><a href="https://youtu.be/ftP5BQh1-YM?t=1246&utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">Russell Keith-Magee Black Swans Keynote</a> <ul> <li><a href="https://www.pythonpodcast.com/python-potential-black-swans-episode-221/?utm_source=rss&utm_medium=rss">Followup Podcast Episode</a></li> </ul> </li> </ul> <p>The intro and outro music is from Requiem for a Fish <a href="http://freemusicarchive.org/music/The_Freak_Fandango_Orchestra/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">The Freak Fandango Orchestra</a> / <a href="http://creativecommons.org/licenses/by-sa/3.0/?utm_source=rss&utm_medium=rss" rel="noopener" target="_blank">CC BY-SA</a></p> </div> <p></p> <img alt="" height="0" src="https://analytics.boundlessnotions.com/piwik.php?idsite=1&rec=1&url=https%3A%2F%2Fwww.pythonpodcast.com%2Fpyoxidizer-python-package-creation-episode-282%2F&action_name=Solving+Python+Package+Creation+For+End+User+Applications+With+PyOxidizer+-+Episode+282&urlref=https%3A%2F%2Fwww.pythonpodcast.com%2Ffeed%2F&utm_source=rss&utm_medium=rss" style="border: 0; width: 0; height: 0;" width="0" />