merge
parent
828937930f
commit
a7ee33bdb0
|
|
@ -1,13 +1,20 @@
|
||||||
FROM python:3.11-slim
|
FROM mcr.microsoft.com/devcontainers/python:3.11
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y build-essential
|
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
|
||||||
|
&& apt-get -y install --no-install-recommends build-essential \
|
||||||
|
&& apt-get clean \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
ARG USERNAME=vscode
|
# --- C-BIBLIOTHEK BAUEN (adder.c) ---
|
||||||
ARG USER_UID=1000
|
COPY adder.c /tmp/adder.c
|
||||||
ARG USER_GID=$USER_UID
|
# Kompiliert und speichert an einem systemweiten Ort
|
||||||
|
RUN gcc -shared -o /usr/local/lib/libadder.so /tmp/adder.c
|
||||||
|
|
||||||
RUN pip install --no-cache-dir pytest black
|
# --- PYTHON-ABHÄNGIGKEITEN ---
|
||||||
|
# Kopiert requirements.txt aus dem Projekt-Root
|
||||||
|
COPY requirements.txt .
|
||||||
|
# Installiert die Pakete
|
||||||
|
RUN pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
RUN groupadd --gid $USER_GID $USERNAME && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME
|
# Setzt das Arbeitsverzeichnis im Container (dies sollte der Mount-Punkt sein)
|
||||||
USER $USERNAME
|
WORKDIR /workspace
|
||||||
WORKDIR /workspace
|
|
||||||
|
|
@ -1,21 +1,20 @@
|
||||||
{
|
{
|
||||||
"name": "Python 3.11 Dev Container",
|
"name": "Python 3.11 Dev Container",
|
||||||
"image": "dev-test-image:latest",
|
"build": {
|
||||||
//"dockerFile": "Dockerfile",
|
"dockerfile": "Dockerfile",
|
||||||
|
"context": "../02_python_interestingPoints"
|
||||||
|
},
|
||||||
"mounts": [
|
"mounts": [
|
||||||
"source=${localWorkspaceFolder},target=/workspace,type=bind"
|
"source=${localWorkspaceFolder},target=/workspace,type=bind"
|
||||||
],
|
],
|
||||||
"remoteUser": "vscode",
|
"remoteUser": "vscode",
|
||||||
|
|
||||||
"customizations": {
|
"customizations": {
|
||||||
"vscode": {
|
"vscode": {
|
||||||
"settings": {
|
"settings": {
|
||||||
// Testing: Pytest-Erkennung aktivieren
|
|
||||||
"python.testing.pytestEnabled": true,
|
"python.testing.pytestEnabled": true,
|
||||||
"python.testing.pytestArgs": [
|
"python.testing.pytestArgs": [
|
||||||
"."
|
"."
|
||||||
],
|
],
|
||||||
|
|
||||||
"python.linting.enabled": true,
|
"python.linting.enabled": true,
|
||||||
"python.linting.pylintEnabled": true,
|
"python.linting.pylintEnabled": true,
|
||||||
"python.formatting.provider": "black"
|
"python.formatting.provider": "black"
|
||||||
|
|
@ -23,9 +22,11 @@
|
||||||
"extensions": [
|
"extensions": [
|
||||||
"ms-python.python",
|
"ms-python.python",
|
||||||
"ms-python.vscode-pylance"
|
"ms-python.vscode-pylance"
|
||||||
]
|
],
|
||||||
|
"features": {
|
||||||
|
"ghcr.io/devcontainers/features/git:1": {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
"postCreateCommand": "pip install --upgrade pip"
|
"postCreateCommand": "pip install --upgrade pip"
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
// Die Funktion, die Python aufrufen wird
|
||||||
|
// extern "C" ist wichtig, um die Namenskonvention (Name Mangling) zu verhindern
|
||||||
|
extern int32_t addiere_zahlen(int32_t a, int32_t b) {
|
||||||
|
// Gibt die Summe der beiden übergebenen Zahlen zurück
|
||||||
|
return a + b;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
max = 100
|
||||||
|
|
||||||
|
gerade_quadrate_lang = []
|
||||||
|
for i in range(1, max):
|
||||||
|
if i % 2 == 0:
|
||||||
|
gerade_quadrate_lang.append(i * i)
|
||||||
|
|
||||||
|
gerade_quadrate_kurz = [i * i for i in range(1, max) if i % 2 == 0]
|
||||||
|
|
||||||
|
print(f"Liste (iterativ): {gerade_quadrate_lang}")
|
||||||
|
print(f"Liste (funktional): {gerade_quadrate_kurz}")
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
messwerte = np.array([25.5, 30.1, 28.9, 35.0, 29.8, 31.2])
|
||||||
|
|
||||||
|
durchschnitt = np.mean(messwerte)
|
||||||
|
|
||||||
|
print(f"Der durchschnittliche Wert beträgt: {durchschnitt:.2f}")
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
import os
|
||||||
|
|
||||||
|
aktueller_ordner = "."
|
||||||
|
|
||||||
|
print(f"Inhalt des Ordners '{aktueller_ordner}':")
|
||||||
|
|
||||||
|
for element in os.listdir(aktueller_ordner):
|
||||||
|
|
||||||
|
if os.path.isfile(element):
|
||||||
|
print(f" - Datei: {element}")
|
||||||
|
else:
|
||||||
|
print(f" - Ordner: {element}")
|
||||||
|
|
@ -0,0 +1,16 @@
|
||||||
|
import ctypes
|
||||||
|
import os
|
||||||
|
|
||||||
|
lib_path = "/usr/local/lib/libadder.so"
|
||||||
|
c_lib = ctypes.CDLL(lib_path)
|
||||||
|
|
||||||
|
c_lib.addiere_zahlen.argtypes = [ctypes.c_int32, ctypes.c_int32]
|
||||||
|
c_lib.addiere_zahlen.restype = ctypes.c_int32
|
||||||
|
|
||||||
|
zahl_a = 33
|
||||||
|
zahl_b = 34
|
||||||
|
|
||||||
|
ergebnis = c_lib.addiere_zahlen(zahl_a, zahl_b)
|
||||||
|
|
||||||
|
print(f"Zahlen: {zahl_a} + {zahl_b}")
|
||||||
|
print(f"Ergebnis von C-Funktion: {ergebnis}")
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
numpy
|
||||||
|
flask
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
from flask import Flask
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
|
||||||
|
@app.route("/hallo")
|
||||||
|
def hallo_welt():
|
||||||
|
return "<h1>Hallo vom Server!</h1>"
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
app.run(debug=False)
|
||||||
Loading…
Reference in New Issue