Ga naar hoofdinhoud

Online zetten: packages in Ubuntu

Hier bouw je op verder: Installeren met sudo apt

Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.

Je code staat in Ubuntu, maar de packages nog niet: .venv zit niet in git. Je installeert ze opnieuw, uit je lijst van les 4. Dat is precies wat een server straks ook doet.

Een virtual environment​

Ubuntu heeft Python al, maar de module om een virtual environment te maken moet je er eerst bij zetten. Typ in de terminal van VS Code, in je project:

sudo apt update
sudo apt install python3-venv
python3 -m venv .venv

sudo apt update haalt eerst de nieuwste lijst met pakketten op; met een oude lijst zoekt apt naar versies die er niet meer zijn. De laatste regel maakt de map .venv, net als op Windows. In Ubuntu heet Python python3: een commando python kent Ubuntu niet.

Aanzetten​

Zet de virtual environment aan in de terminal:

source .venv/bin/activate

source voert een bestand uit in je eigen terminal. Voor je prompt staat nu (.venv):

(.venv) sam@laptop:~/gastenboek$

Zolang dat er staat, is python de Python uit .venv, en komt alles wat je installeert daarin. Staat er in een terminal geen (.venv) voor de prompt, typ deze regel dan opnieuw.

Installeren uit je lijst​

python -m pip install -r requirements.txt
Controlevraag
In een terminal staat geen (.venv) voor je prompt. Je typt python -m pip install -r requirements.txt. Wat gebeurt er?
Kies wat jij denkt. Bij het goede antwoord zie je de uitleg.

Er gaat iets mis​

Een pakket dat apt niet kan ophalen​

E: Package 'python3-venv' has no installation candidate

Of, met een 404:

E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/universe/p/python3.12/python3.12-venv_…_amd64.deb 404 Not Found

Oorzaak: de lijst met pakketten van apt is leeg of oud. Je sloeg sudo apt update over. Met een lege lijst kent apt het pakket niet; met een oude zoekt hij een versie die er niet meer is.

Oplossing: typ sudo apt update, en installeer opnieuw.

ensurepip is not available​

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 install python3.12-venv

Oorzaak: de module voor een virtual environment staat nog niet in Ubuntu.

Oplossing: installeer hem met sudo apt update en sudo apt install python3-venv, en typ python3 -m venv .venv opnieuw. De half gemaakte map .venv hoef je niet eerst weg te gooien.

Command 'python' not found​

Command 'python' not found, did you mean:
command 'python3' from deb python3
command 'python' from deb python-is-python3

Oorzaak: de virtual environment staat niet aan. Zonder .venv heet Python in Ubuntu python3.

Oplossing: zet hem aan met source .venv/bin/activate, kijk of (.venv) voor je prompt staat, en typ je commando opnieuw. Installeer geen python-is-python3: dan werkt python ook als je virtual environment uitstaat, en merk je niet meer dat hij uitstaat.

externally-managed-environment​

error: externally-managed-environment

× This environment is externally managed

Of: /usr/bin/python3: No module named pip.

Oorzaak: je typte python3 -m pip terwijl de virtual environment niet aanstaat. Je probeert te installeren in de Python van Ubuntu zelf, en die laat dat niet toe, of heeft geen pip.

Oplossing: zet hem aan met source .venv/bin/activate, kijk of (.venv) voor je prompt staat, en installeer opnieuw. Installeer geen python3-pip om dit te omzeilen.

Door naar les 11: je site draait in Linux.