Puncte:2

sursa venv/bin/activate nu returnează nimic pe CentOS

drapel im

Încerc să implementez o aplicație Python Flask (pentru punctul final API) pe CentOS pentru lucru, dar fiecare ghid online pe care l-am urmat nu funcționează pentru mine!

python3 -m venv APIenv

Env a fost creat cu succes, dar apoi a încercat să-l activeze:

sursă APIenv/bin/activate

Nu returnează nimic, nici o eroare nu îl activează!

din câte am înțeles, activarea lui ar trebui să facă CLI-ul să arate așa:

(venv) $ _

Am si eu o alta problema:

pip3 instalează firebase_admin

aceasta a funcționat și a fost instalat, dar apoi rulez aplicația mea:

python3 app.py

Traceback (cel mai recent apel ultimul): Fișierul „app.py”, rândul 4, în import firebase_admin ModuleNotFoundError: Niciun modul numit „firebase_admin”

Fiecare ghid online pe care l-am urmat mă blochează aici, chiar trebuie să fac asta să funcționeze, cu ce greșesc?

Puncte:3
drapel us

Probabil că aveți pip3 conectat la o altă versiune de python (3.6,3.8, etc) decât python3 pe care o utilizați

Asigurați-vă că utilizați aceleași versiuni și că de fapt este în venv verificați python3

# python3 -V
Python 3.8.6
# care python3
/tmp/APIenv/bin/python3
# ls -laht /tmp/APIenv/bin/python3
lrwxrwxrwx 1 root root 8 sep 30 13:59 /tmp/APIenv/bin/python3 -> python38

Verificați pip3

# pip3 -V
pip 19.3.1 din /tmp/APIenv/lib64/python3.8/site-packages/pip (python 3.8)
# care pip3
/tmp/APIenv/bin/pip3
# ls -laht /tmp/APIenv/bin/pip3
-rwxr-xr-x 1 rădăcină rădăcină 225 30 septembrie 13:59 /tmp/APIenv/bin/pip3

uneori poate arăta așa chiar și sub VENV:

# care python38
/tmp/APIenv/bin/python38
# ls -laht /tmp/APIenv/bin/python38
lrwxrwxrwx 1 root root 17 sep 30 13:59 /tmp/APIenv/bin/python38 -> /usr/bin/python38

Verificați apoi căile interpretorului dvs. pip și python, pentru a vă asigura că le puteți utiliza după calea absolută a venv-ului dvs.

Actualizat:

Problemă legată de versiunea python3.6.

firebase_admin nu poate fi instalat cu versiunea python3.6

Necesar cel puțin python3.8 (3.7 nu a fost testat)

Instalarea Python38 pentru Centos 8 și modulele de întrebări aferente:

dnf instalează python38 python38-pip
pip38 instalează firebase_admin flask venv
KiDo avatar
drapel im
python3 -V => Python 3.6.8 | care python3 => /bin/python3 | Cât despre pip: pip3 -V => pip 9.0.3 din /usr/lib/python3.6/site-packages (python 3.6) | care pip3 => /bin/pip3 | Problema este Python 3.6.8, în timp ce pip este doar 3.6?
drapel us
nu, nu este o problemă, acea ieșire este sub VENV? după cum văd că există căi de mediu de sistem, nu din mediul virtual, pare o problemă
KiDo avatar
drapel im
Îmi pare rău, nu am înțeles, dacă mă ajută, folosesc root, instalat python și pip înainte de a trece în directorul venv
drapel us
ar trebui să activați mediul virtuan cu comanda `source APIenv/bin/activate`, apoi veți vedea un astfel de prefix în shell `(venv) $ _`, apoi rulați comenzile `pip3 install firebase_admin` și `python3 app.py`, toate acesta în mediul virtual pe care îl puteți observa prin prefixul `(venv) $ _`
KiDo avatar
drapel im
Încerc asta, dar nu returnează nimic, așa cum ați menționat, shell-ul ar trebui să se schimbe în ```(venv) $```, dar în cazul meu rămâne același ```[root@ MyAPI]#```
drapel us
Deci, aveți 2 probleme, una legată de activarea venv și sercond, sunt destul de sigur că o problemă cu `pip3 install firebase_admin` din cauza versiunii python3.6 firebase_admin care încearcă să se instaleze, dar nu a reușit la sfârșit, ar trebui să instalați o versiune mai nouă de python, cel puțin 3.8 apoi rulați ceva de genul `pip38 install firebase_admin flask venv` și încercați din nou pașii de la întrebarea dvs. de mai sus, dar folosind noua versiune cu `python38` în loc de python3
KiDo avatar
drapel im
Am urmat acești pași și totul pare să funcționeze, singura problemă rămasă este că tot nu îl pot accesa folosind IP-ul public (alte PC-uri), îl rulez cu: ```flask run --host=0.0. 0.0``` și am deschis portul 5000, dar încercarea de a-l verifica folosind Postman returnează Timed Out pentru conexiune
drapel us
încercați să ștergeți regulile iptables dacă este posibil cu `iptables -F` și verificați conexiunea, dacă va funcționa, puteți crea o regulă de acceptare a iptables pentru acel port, dacă nu ajută - furnizați-mi ieșirea terminalului flask în timpul pornirii
KiDo avatar
drapel im
[root@ MyAPI]# rulare flask --host=0.0.0.0 * Servirea aplicației Flask „app.py” (încărcare leneră) * Mediu: producție AVERTISMENT: Acesta este un server de dezvoltare. Nu-l utilizați într-o implementare de producție nt. Utilizați în schimb un server WSGI de producție. ...
KiDo avatar
drapel im
* Modul de depanare: dezactivat * Rulează pe toate adresele. AVERTISMENT: Acesta este un server de dezvoltare. Nu-l utilizați într-o implementare de producție nt. * Rulează pe http://serverIP:5000/ (apăsați CTRL+C pentru a ieși)
drapel us
care este `serverIP:5000`?, ar trebui să existe `Running on http://0.0.0.0:5000/` aveți șir app.run ca acel `app.run(host='0.0.0.0', port= 5000)` în aplicație sau arată diferit? de asemenea, ar trebui să aveți o adresă IP publică (care nu are legătură cu domeniul privat)
KiDo avatar
drapel im
serverIP este IP-ul serverului meu: âââxx.xx.xx.xx:5000âââ, iar în app.run, am doar âapp. run()â, deoarece ghidul Flask spune că trebuie doar să rulez această comandă pentru a o face public: âflask run âhost=0.0.0.0â, iar eu am un IP public, acesta... s unde este găzduit site-ul meu WordPress.
drapel us
dacă spui așa și nu te poți conecta cu ip public și portul 5000, este o problemă de rețea pe partea sistemului de operare a serverului (legată de regulile de conectare de intrare) sau de partea ta (router, furnizor de internet, etc, ceva care poate bloca ieșirea se conectează la 5000), puteți furniza ieșirea „iptables-save”, apoi m-aș uita dacă există vreo problemă
KiDo avatar
drapel im
OMG ai dreptate! Am încercat să-l accesez folosind altă rețea și a funcționat! Ești un geniu și nu am cuvinte să-mi arăt aprecierea și recunoștința pentru ajutorul tău! Am doar o ultimă întrebare, cum îl mențin să ruleze în fundal?
drapel us
Puteți urmări răspunsul meu la această întrebare pentru a-l rula ca serviciu systemd: https://serverfault.com/questions/1078666/how-do-i-create-a-python-3-service-that-uses-socket-with-systemd/1079133#1079133

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.