Tecnología · GUÍA PRÁCTICA
¿Python funciona en la terminal pero systemd da ModuleNotFoundError? Demuestra el intérprete y sys.path
Antes de reinstalar, registra el Python, los prefijos, el usuario, el directorio de trabajo y la ruta de módulos del servicio; corrige un límite probado y repite la misma sonda.

Un ModuleNotFoundError que aparece solo en systemd es un problema de límite de ejecución hasta que la evidencia demuestre otra cosa. El servicio puede usar otro Python, venv, usuario, HOME, cwd o ruta de búsqueda.
No empieces con sudo pip, chmod, un PYTHONPATH global ni activate. Ejecuta la misma sonda pequeña y redactada en ambos entornos y cambia solo una diferencia demostrada.
Congela el servicio que falla y la terminal que funciona
Guarda la unidad, propiedades clave y traceback del journal; no copies secretos.
Recoge el mismo id, pwd, Python, pip y sonda en la terminal y bajo la identidad del servicio.
Crea un registro del límite de importación
Registra executable, prefix, cwd, uid/gid, HOME, sys.path y find_spec.
Usa python -m pip show con ese intérprete; otro pip no prueba importabilidad.
Clasifica la primera diferencia
Si cambia Python, apunta ExecStart al Python del venv; no hace falta activar.
Si cambia cwd, fija WorkingDirectory absoluto o empaqueta el proyecto correctamente.
Repara el límite del paquete, no el síntoma
Usa un entorno reproducible y legible por la cuenta de servicio, con su propio python -m pip.
Environment solo para datos no secretos; PYTHONPATH como prueba acotada, no root para ocultar el límite.
Recarga, reinicia y repite la sonda
Ejecuta daemon-reload cuando proceda, reinicia y repite exactamente el registro.
Prueba un trabajo real y el journal; cierra solo si reinicia e importa con privilegio mínimo.
Usa ramas de fallo para evitar falsos arreglos
Si pip show funciona y find_spec no, revisa nombre de distribución/importación, extras y rutas editable.
200/CHDIR exige arreglar cwd; ExecStart ausente exige arreglar el ejecutable antes del import.
