I’ll be using asdf to help control what version of Python I’m running.
I like pipenv to help manage my Python virtual environments.
I like to use PostgreSQL with Django, so lets’ first make sure that it’s installed:
sudo apt install postgresql sudo apt install libpq-dev # make sure it's running # You should see it listening to lots of ports ss -nlt
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.10.0 # modify .bashrc files, exit terminal and restart terminal
sudo apt-get update sudo apt-get upgrade # install packages necessary to build stuff sudo apt install wget build-essential libreadline-dev libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev libbz2-dev libffi-dev zlib1g-dev liblzma-dev
asdf plugin-add python
asdf install python 3.9.12 asdf global python 3.9.12
If the correct version of Python isn’t detected, you might need to reshim.
python -m pip install --upgrade pip pip install pipenv asdf update asdf reshim python 3.9.12 pipenv install
[pipenv.exceptions.ResolutionFailure]: Warning: Your dependencies could not be resolved. You likely have a mismatch in your sub-dependencies.
You can use $ pipenv install –skip-lock to bypass this mechanism, then run $ pipenv graph to inspect the situation.
Hint: try $ pipenv lock –pre if it is a pre-release dependency.
ERROR: metadata generation failed
Turned out the above error, was because I didn’t have postgres installed on the new box (and my django uses postgres)
Error: pg_config executable not found.
I got much futher along
# how to know things are almost all the way there ./manage.py shell
python manage.py dbshell # If you didn't setup your postgres, you'll get an error like: # python manage.py dbshell # psql: error: connection to server at "127.0.0.1", port 5432 failed: Connection refused # Is the server running on that host and accepting TCP/IP connections?
You’ll need to start the server:
sudo service postgresql start
python manage.py dbshell psql: error: connection to server at "127.0.0.1", port 5432 failed: FATAL: password authentication failed for user "abcuser" connection to server at "127.0.0.1", port 5432 failed: FATAL: password authentication failed for user "abcuser"
The user and database don’t appear to exist — so let’s create them:
sudo su - postgres # skipping the lines as you login as user postgres psql # now you are in the postgres shell CREATE DATABASE abcdb; CREATE USER abcuser WITH PASSWORD 'abc123'; \q # that exists the postgres shell exit # that logs out the postgres user
You should now be able to init the DB
python manage.py migrate python manage.py createsuperuser # then run any bootstrapping that you need to # python manage.py loaddata xyz.json
# needed for pango and weasyprint (creating PDFs) sudo apt-get install libpangocairo-1.0-0
Now, to get django working in VSCode
- install the Python extension for Visual Studio Code
- Press F1, then choose Python: Select Interpreter and make sure you are pointing to your correct venv
- Press the Run and Debug Icon