Puncte:1

Cum să utilizați pipenv pentru a instala aplicații „globale” care să fie rulate ca servicii

drapel nc

Postat încrucișat din Stack Overflow, deoarece era posibil în afara subiectului acolo.

Încerc să folosesc pipenv pentru a distribui o aplicație Python pe un server (în acest caz, este Windows, dar am o incertitudine similară cu Linux).

Am făcut anterior următoarele:

  1. Instalați Python la nivelul întregului sistem
  2. pip install pipenv

Atunci instalare pipenv și pipenv alerga ca de obicei. Asta are avantajul (cred) ca orice utilizator sau chiar un utilizator al serviciului poate rula aceste comenzi. Scopul meu este ca aplicația Python să fie rulată în mod normal ca serviciu (folosind nssm pe Windows), dar, în caz contrar, poate fi rulată de orice utilizator fără ca acesta să fie nevoit să instaleze pipenv.

Cu toate acestea, documentele oficiale sfătuiesc un utilizator să instaleze „să evite spargerea pachetelor de sistem” pip install --user pipenv sau prin pipx. În ambele cazuri, rezultatul este că binarul pipenv ajunge într-un folder de utilizator care trebuie adăugat la PATH, cu excepția cazului în care doriți să îl referiți folosind calea completă. Mi se pare greșit să ai un serviciu care indică un binar în folderele mele personale, în mod similar, alți utilizatori ar trebui să-și instaleze propriul pipenv sau să adauge folderele mele la căile lor. Totul pare foarte ciudat, dar poate am omis ceva. Este ceva în neregulă cu abordarea mea? Există o abordare de „cea mai bună practică” pentru utilizarea pipenv pentru implementare?

Mai multă confuzie Am experimentat ceva mai mult cu acest lucru și am realizat că chiar și atunci când pipenv este instalat la nivel de sistem, „virtualenvs” sunt create la nivel de utilizator. Cu toate acestea, văd că acest lucru poate fi schimbat cu o variabilă de mediu pentru a pune „virtualenv” în interiorul proiectului. În plus, am descoperit că pe Windows nu pot face pipenv rulat pentru a funcționa dintr-un serviciu, deoarece nu pare să activeze virtualenv. În schimb, a trebuit să creez un fișier batch care activează virtualenv și execută main.py, apoi indică NSSM către asta.

TLDR: Caut un flux de lucru de implementare folosind pipenv pentru software-ul Python care să fie rulat ca serviciu*. În mod ideal, aș dori ca acesta să fie independent de platformă, astfel încât să pot folosi un flux de lucru similar în serverele Windows și Linux.

*Pe Windows intenționez să folosesc NSSM pentru a rula serviciul, pe Linux systemd. Sunt mulțumit(ă) de aceste instrumente, este pipenv care mă încurcă.

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.