from Hacker News

Show HN: How to Install Python on a Mac

by DanielKehoe on 5/13/24, 10:54 PM with 7 comments

I recently began using Python for AI projects and found Rye, which is an all-in-one tool that replaces Pyenv, Pip, and Venv, for a more project-centered approach to Python development (like Ruby or JavaScript or Rust). As someone who habitually writes tutorials for beginners, I wrote a series of articles for my mac.install.guide site advocating setting up Python projects using Rye.

Am I leading beginners down the wrong path by suggesting Rye for Python tooling?

Beginners often encounter READMEs and tutorials that show `pip install something` as a first step. That led me to the error "Command not found: pip" [0] (so I wrote about that). Solving that led to the error "Command not found: python" [1] and I first tried the system Python installed with XCode Command Line Tools and then "brew install python" [2]. That led me to "Error: externally-managed-environment" [3] which is a recent safeguard to encourage Python users to use environment managers to avoid dependency conflicts from globally-installed packages. At that point, I realized that there are two different use cases for using Python, either standalone tools and applications, where it's best to "install Pipx" [4], or programming with Python, including installing Python packages, where there's need for a version manager, a package manager, and an environment manager. There's no built-in version manager (for that, you will "install pyenv" [5]) but Pip and Venv are a built-in package manager and environment manager, once you have Python installed. As a guide, I wrote about "Mac Python" [6] and how to "Update Python" [7].

This diagram [8] helped me understand which Python tools are used for version management, package management, and environment management. That's where I found Rye, an all-in-one tool that eliminates the need for Pyenv, Pip, Venv, and other tools. So I wrote about how to "install Python with Rye" [9] and how to "Use Rye" [10].

These are the articles that were most helpful in showing how to set up a Python development environment:

- https://blog.viraptor.info/post/python-dependency-management...

- https://justinmayer.com/posts/homebrew-python-is-not-for-you...

- https://blog.glyph.im/2023/08/get-your-mac-python-from-pytho...

For beginners, I feel Rye is a better choice (as a single tool) than a grab bag of multiple tools, but I heard there is some resistance to Rye in the Python community, as it's written in Rust and other people have already tried to improve the Python developer experience without achieving success.

Others have suggested asdf or mise (good choices for managing multiple languages), Docker (appropriate for collaboration on a complex project but overkill for simple, one-developer projects), and Nix (a lot to learn).

To wrap it all up, I wrote a freeCodeCamp article, "How to Install Python on a Mac" [11]. I'm sharing the links here for comments and feedback from those more experienced than I.

[0] "Command not found: pip" (https://mac.install.guide/python/command-not-found-pip)

[1] "Command not found: python" (https://mac.install.guide/python/command-not-found-python)

[2] "brew install python" (https://mac.install.guide/python/brew)

[3] "Error: externally-managed-environment" (https://mac.install.guide/python/externally-managed-environm...)

[4] "install Pipx" (https://mac.install.guide/python/pipx)

[5] "install pyenv" (https://mac.install.guide/python/install-pyenv)

[6] "Mac Python" (https://mac.install.guide/python/)

[7] "Update Python" (https://mac.install.guide/python/update)

[8] diagram https://alpopkes.com/posts/python/figures/venn_diagram.png

[9] "install Python with Rye" (https://mac.install.guide/python/install)

[10] "Use Rye" (https://mac.install.guide/python/use-rye)

[11] "How to Install Python on a Mac" (https://www.freecodecamp.org/news/how-to-install-python-on-a...)

  • by BiteCode_dev on 5/27/24, 3:56 PM

    I've been repeating again and again that everywhere, but the sweet spot for beginners is to stick to the boostrapping method that will lead to the least possible modes of failure.

    Because I don't want to repeat it every time, I eventually wrote everything down, so know I can just link to it:

    For installing Python: "Installing and running Python: the bare minimum you can get away with"

    https://www.bitecode.dev/p/installing-python-the-bare-minimu...

    To manage deps: "Back to basics with pip and venv":

    https://www.bitecode.dev/p/back-to-basics-with-pip-and-venv

    And how I justify those very steps: "Why not tell people to "simply" use pyenv, poetry, pipx or anaconda".

    https://www.bitecode.dev/p/why-not-tell-people-to-simply-use

    At this point it kinda feels like spamming, but honestly, there is too much noise out there, and those points don't come across enough. Especially since most dev are either too little or too much experienced to be helpful.

  • by pvg on 5/14/24, 12:36 PM

    Show HN is for things you've made other people can try - that excludes reading material like tutorials, blog posts, etc - take a look at https://news.ycombinator.com/showhn.html
  • by odie5533 on 5/14/24, 2:44 PM

    pyenv + pip are tried and trusted. I would expect every tutorial they encounter will use them. So they're worth learning for that.

    Rye is a great tool, but my issue with it is barely anyone uses it, and no tutorials or guides are going to use it. So when you read a README to install a package, you're going to see pip commands and have to figure things out yourself.

  • by smcleod on 5/14/24, 1:35 AM

    brew install pyenv && pyenv install 3.12