--- title: Python 3 (via pyenv) homepage: https://webinstall.dev/pyenv tagline: | Python is an easy-to-learn, introductory programming language. --- To update or switch versions, run `pyenv install -v 3` (or `3.10`, etc). ### Files These are the files / directories that are created and/or modified with this install: ```sh ~/.config/envman/PATH.env ~/.pyenv/bin/ ~/.pyenv/shims/ # pyenv also loads shell hooks via ~/.bashrc ~/.config/fish/config.fish ~/.zshrc ``` ### How to Install python3 on macOS Install Xcode tools first: ```sh xcode-select --install ``` ### How to Install python3 on Linux Make sure that you already have the necessary build tools installed: ```sh # required sudo apt update sudo apt install -y build-essential zlib1g-dev libssl-dev # recommended sudo apt install -y libreadline-dev libsqlite3-dev \ libffi-dev libbz2-dev liblzma-dev ``` ## Cheat Sheet ![](https://github.com/ewjoachim/zen-of-python/raw/master/zen_web.png) Python is a introductory programming language that focuses on Software Engineering principles - as laid out in _The Zen of Python_ (above). Note: `pyenv` (used here) is the only way you should ever install Python, otherwise you risk messing up your system version of python, and existing python projects. ## How to reset to the system python? `pyenv` installs a conflict-free version of python that will not interfere with system utilities (which is why we love it so much). However, in the rare event that you need to switch your user profile's python back to the system version, you can do so: ```sh pyenv global system ``` ## How to use a specific version of python in a project? Go into the root of your project repository and run this, for example: ```sh pyenv local -v 3.10.0 ``` Change 3.10.0 to the version you want for that project, of course. 😁 ## Where to learn Python? [Learn Python 3 The Hard Way](https://learnpythonthehardway.org) is probably the best beginner resource. - [Physical Book + Video Course](https://amzn.to/3opwwxT) - - [eBook + Video Course](https://shop.learncodethehardway.org/access/buy/9/) - [Free Digital Copy](https://learnpythonthehardway.org/python3/) ## What to learn after Python? Python's a great language for learning to program and it still has a lot of practical uses, but it's a product of its time and not as well-suited for modern web development as more modern languages that were designed to handle the types of problems that exist for programmers in today's world. What are the best alternatives? - [Go](https://webinstall.dev/golang) is a better choice for systems programming and web development, and "is a language you can learn in a weekend". - [Rust](https://webinstall.dev/rustlang) is a better choice for games and machine learning, but may be more difficult to master. - [Node](https://webinstall.dev/node) is a better choice for web programming and programmer tooling. That all said, it's probably still worth it to learn Python first - it has much better learning resources than Node, and the learning resources for Go and Rust typically assume you've had experience with one of the languages they replace... such as Python. Once you learn _how to program_, you can easily apply that to _any_ language. 90%+ of programming is _programming_. Maybe 10% is the language you choose.