Miért nem találja az Apache alapú szerveren a Python az appomat?
Már 7-8 órája itt szenvedek az Apache2-vel, hogy egy egyszerű Flask alapú webalkalmazást beüzemeljek.
Odáig jutottam, hogy a venv már kész, fel van minden telepítve (/usr/venvs/appneve), a fájlok a helyükön vannak, a mod_wsgi is fel van telepítve. A probléma ott van, nem találja a saját fájlját (ImportError: No module named appneve, referer: [link] a program. Kutakodtam a logok közt, de egyszerűen semmit nem találtam.
Volt egy pont, amikor valamiért eljutott oda, hogy azért panaszkodik, hogy a Flasket nem találja, de az hirtelen el is tűnt érdekes módon.
A szerver: Ubuntu 20.04
Python: 3.10
WSGI szerver: mod_wsgi
Az app fájljai: /home/appneve/public_html/ (és itt egy appneve mappa, benne az __init__.py fájllal amin keresztül indítani kéne a programot)
(igen, ezt láttam: [link] és nem segített sokat)
appneve.wsgi: from appneve import app as application
appneve.net.conf: [link]
(Az apache2.conf fájlt nem piszkáltam)
Mint láthatjátok, fogalmam sincs, hogy mit csinálok. Kérlek titeket, hogy úgy magyarázzatok, mint egy 5 évesnek.
"ImportError: No module named appneve, referer: [link]
Szerintem jól működik a rendszer. Úgy tűnik, hogy az Apache próbálná elindítani az appot, de maga az applikációt tartalmazó py nincs benne a PYTHONPATH-ben. Legalábbis ezt súgja az intuícióm. Ezt elég könnyen ki lehet próbálni. De lehet, hogy ehhez hasonló a probléma: [link]
Különben még sosem használtam apachet arra, hogy flack applikációt deployoljak (<- van erre magyar szó?), inkább gunicornt használok. Szóval egyértelmű segítséget nem tudok adni. Azt tudom javasolni, hogy próbálj valamiféle minimális renszert összerakni: fusson a te gépeden az apache, és nézd, hogy az appod kiírja-e a localhoston a hello word-öt. Egy ilyen minimális rendszerben nagyon gyorsan lehet iterálni és megtalálni a hiba forrását. (A fenti SO kérdésben le van írva elég jól egy ilyen minimális rendszer)
Köszi a választ. Azért van Apache a szerveren, mert egyéb oldalak is vannak a szerveren (pl. Wordpress oldalak).
Azóta még próbálkoztam így-úgy, és eljutottam odáig, hogy a PATH-hez a venv-et sikeresen hozzáadtam, de nem tudom beaktiválni mert hibát dob az activate_this.py (azóta új virtualenvet csináltam, ezúttal a venv helyett a virtualenv paracssal).
Most az alábbi Python hibát dobja ki:
AttributeError: DistutilsMetaFinder instance has no attribute 'find_module'
(Mint kiderült Python 3.8 van a szerveren, de ez aligha számít)
Haha, itt valami nagy gubanc lehet, mert a DistutilsMetaFinder-nek abszolut semmi koze a flask-hez.
Otthon megprobalok beizzitani egy webservert apache-on. Azt meglatjuk, hogy sikerul. Mondjuk en eleve inkabb conda-t hasznalok kornyezet manageleshez, bar nem tudom, hogy ennek mekkora szerepe lesz.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!