Getting StartedLately, I was asked about how to get started with web development and Python in general. I pointed out some books and tutorials but then thought about what could improve the probability of success over just pointing to a lot of information. And the only thing I could think of was: Implement a small project with Django step by step. Create a GitHub repository for the project. I will have a look at your progress and keep adding issues. And of course provide help when you get stuck.
If you have a better idea on how to help people get started, please tell me. I'm very interested to hear about it 🤓.
And then someone (maybe my wife) told me that writing down all those steps as a series of blogposts could be also helpful for other people. So here we are 😏. We had to choose a platform to use for this project and despite being a happy macOS by myself we agreed upon using Debian / Ubuntu for this project.
Installing PythonThe first rule of Python is: Don't use your preinstalled system Python!
This is especially true for Debian-based distributions since they brake the Python standard library up into smaller packages, which breaks all sorts of things in weird ways. Even really basic stuff like creating a virtual environment won't work anymore.
python3 -m venv venv The virtual environment was not created successfully because ensurepip is not available. On Debian/Ubuntu systems, you need to install the python3-venv package using the following command. apt-get install python3-venv
For now, I recommend using pyenv to manage your Python installations until something better comes along. Install it by cloning the git repository like this.
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
And then prepare your shell for using pyenv by using the appropriate snippet for your preferred shell.
Before being able to install a real Python version using pyenv, you have to install some packages that allow you to compile Python without errors.
sudo apt install build-essential libssl-dev zlib1g-dev libgdbm-dev libnss3-dev \ libreadline-dev libbz2-dev libsqlite3-dev libncurses5-dev libffi-dev liblzma-dev
And now the installation of Python should finally be possible.
pyenv install 3.10.6 # compils + installs Python ... pyenv global 3.10.6 # instructs pyenv to use version 3.10.6 as your global Python version
Create a New Virtual EnvironmentDespite now having the standard libraries venv module available, I prefer using virtualenv to create virtual environments, because it's faster and automatically installs the latest versions of pip, wheel and setuptools in the virtual environments it creates, which means one line less to type.
python -m pip install virtualenv
mkdir -p ~/projects/foo cd ~/projects/foo python -m virtualenv --prompt . venv
Now the last step is to activate your Python environment, which depends on your shell.
use venv/bin/activate for bash/zsh or venv/bin/activate.fish for the fish shell.