[Python Dependency Pitfalls] A total mess?

Hey there,

Recently I watched a Pythonista ask for advice on setting up a Python project on his work machine.

This new developer had some prior experience with NodeJS and had just started to get his feet wet with Python.

But OH BOY was he already frustrated:

"Why is Python dependency management so sh*t?"

He was trying to install someone else's Python application and to get it to run on his work machine.

The app had some external dependencies it needed to work properly—things like a third-party networking library and a database interface.

But the way the original author "documented" these dependencies was utterly lacking:

There was only a small "README" file with a list of packages the project needs to work.

That's where the trouble started—

This list was a) incomplete and b) lacked any versioning information whatsoever.

So our poor Pythonista is trying hard to make this application work.

But every time he installs another package dependency and then tries to launch the app he gets slammed in the face with this:

"ImportError: No module named X"

He then spends 15 minutes googling for a solution, finally hunts down and installs the missing package, runs the app again and:

"ImportError: No module named Y"

Yuck!

(Rinse and repeat.)

He's spinning his wheels, and the lack of progress is starting to get to him.

After all, what he loves about programming is "programming"—and NOT wasting hours on trial and error just getting ready for some real development work.

So the guy becomes (understandably) more and more irritated.

Finally, he vents his frustration by putting the blame on Python:

"In NodeJS it's fairly basic to have all dependencies listed in package.json and everything gets installed automatically with a simple command…"

"Why isn't there such a thing for Python? Python packaging is A TOTAL MESS."

And who would disagree with him after going through the same experience?

Modern dependency management and dealing with third-party packages in Python is complex.

And it's easy to get stuck or to "shoot yourself in the foot" if you don't feel confident in the central workflows and tools.

Over the next 5 days, I'll show you some of the main pitfalls with dependency management in Python—and how to avoid them.

When you steer clear of these potholes, you'll find that you can make progress more easily…

And you'll pull ahead of your peers who are left wondering why their productivity continues to plateau.

We'll kick off the first lesson tomorrow.

— Dan Bader

P.S. Ironically, pitfall #1 is something that recently shook the NodeJS community to its core.

It was a "clustermug" so bad that even some newspapers reported about it. But unfortunately Python isn't immune against this problem either…

You'll hear the details in my next email.

Key phrases

Older messages

[Sublime + Python Setup] The Ctrl+s "Heisenbug"

Monday, September 12, 2022

"What the **** is going on?!" I heard Keith yell. Returning from my lunch break and in a helpful mood I grabbed my coffee mug and shuffled over to my coworker's desk. "What's

[Python Mastery] What Pythonistas can learn from bestselling authors

Sunday, September 11, 2022

Hey there, I just finished reading Stephen King's "On Writing." It's a great little book where he shares some of the writing advice and stories he's picked up over the course of

[Python Dependency Pitfalls] The Iceberg

Sunday, September 11, 2022

Hey there, The other day I read this quote from a Python developer that made me stop and think: "As a noob with a little programming knowledge already, I've found setting up and installing

[Sublime + Python Setup] How to become a happier & more productive Python dev

Sunday, September 11, 2022

Hey there, I really struggled with setting up an effective development environment as a new Python developer. It was difficult to build the right habits and to find a set of tools I enjoyed to use.

[Python Mastery] The hidden costs of "copy-paste" Python programming

Saturday, September 10, 2022

Hey there, Here's a development story that plays out thousands of times each day: Avid Pythonista Max is working on a function to find the 10 oldest files in a nested directory hierarchy. He needs

👎 No Filter

Friday, September 30, 2022

Texas anti-censorship law | Internet shut down in Iran is an act of violence | when asteroids attack! ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌ ‌

Issue #456: Third Room, cardioid, and Knight n' Dice

Friday, September 30, 2022

Weekly newsletter about HTML5 Game Development. Is this email not displaying correctly? View it in your browser. Issue #456 - September 30th 2022 If you have anything you want to share with the HTML5

[Sublime + Python Setup] why Atom can’t replace Sublime

Friday, September 30, 2022

Hey there, "In a nutshell, Atom is a Sublime Text editor that just got better." When I read this quote I got so worked up I nearly fell off my chair. Because every time I've tried Atom or

[Python Dependency Pitfalls] "Re-inventing the wheel" disease

Friday, September 30, 2022

Hey there, PyPI, the Python packaging repository, now contains more than 100000 third-party packages in total. That's an *overwhelming* number of packages to choose from... And this feeling of

[Python Mastery] Learn Python in 21 days!!!!11 (what a lie)

Friday, September 30, 2022

Hey there, One of the first programming books I ever bought was "Teach Yourself C in 21 Days." This four pound tome came with a CD-ROM that included an ancient version (3.1) of the Borland

Software Testing Weekly - Issue 139

Friday, September 30, 2022

Principles of Writing Automated Tests View on the Web Archives ISSUE 139 September 30th 2022 COMMENT Welcome to the 139th issue! Hope you had a nice week so far! There's plenty of great news in

Reader | PC & Console Insights Report, Google Play Games beta expansion, Indie Games Festival winners

Friday, September 30, 2022

What's new for games in Android and Google Play View as webpage Google Play September (Q3) 2022 GAMES QUARTERLY PC & Console Insights Report LEARN MORE Get insights into designing and launching

This Week in Rust 462

Friday, September 30, 2022

Email isn't displaying correctly? Read this e-mail on the Web This Week in Rust issue 462 — 28 SEP 2022 Hello and welcome to another issue of This Week in Rust! Rust is a programming language

Data Science Weekly - Issue 462

Thursday, September 29, 2022

Curated news, articles and jobs related to Data Science. Keep up with all the latest developments Email not displaying correctly? View it in your browser. Issue #462 September 29 2022 Editor's

Google is shutting down Stadia — and Make-A-Video: AI system that generates videos from text

Thursday, September 29, 2022

Issue #905 — Top 20 stories of September 30, 2022 Issue #905 — September 30, 2022 You receive this email because you are subscribed to Hacker News Digest. You can open it in the browser if you prefer.