Ciao


Non ho mai usato Heroku, ma vedo che supportano il deploy di immagini docker.



Se usare docker è un'opzione per voi, allora potete deployare un'immagine con 
le dipendenze necessarie a compilare la libreria, le librerie, e il vostro 
codice python.



Se funziona, potete poi ottimizzare usando una multi-stage build 
https://docs.docker.com/build/building/multi-stage/ : 

1. nella prima parte, installate gcc e le librerie, dicendo a pip di salvare le 
wheels in una cartella

2. nella seconda, installate le librerie partendo dalle wheels in quella 
cartella



Noi facciamo così in un paio di servizi che usano librerie con parti native da 
compilare: la build è lenta, ma il risultato è un'immagine docker snella e 
minimale


ciao



federico






---- On Mon, 09 Jan 2023 19:17:46 +0100 Perini Matteo <perini.mat...@gmail.com> 
wrote ---



Ciao a tutti,

vi chiedo aiuto perchè sto riscontrando problemi a fare il deploy di una web 
app flask su heroku.

Credo che il problema stia nella creazione del virtual env su heroku.

L'app che ho costruito fa uso di varie librerie, tutte tranne una installabili 
tramite pip.
Una invece, PyOCC (porting per python di OpenCascade), non sono riuscito ad 
installarla ne con pip ne compilando i sorgenti.

Fortunatamente ho trovato un pacchetto conda già pronto e ho portato avanti 
tutto lo sviluppo dell'app in un conda env (pensando non vi fosse grande 
differenza con venv).

Adesso però per fare il deploy su heroku ho scoperto che bisogna generare da 
conda un requirements.txt che poi viene usato dallo script di heroku per creare 
l'ambiente (usando venv se non sbaglio).

Visto che non ne vengo a capo e il deploy si "rompe" sempre (penso perchè pip 
non riesce ad installare pyOCC), ho pensato di copiare la libreria OCC 
dall'environment conda alla mia cartella di progetto in modo da portarla dentro 
heroku come sorgente.

Naturalmente in locale tutto funziona bene.

Non so se ho spiegato abbastanza bene la situazione ma arrivo alle domande:

1) Ho capito bene? heroku usa venv? non posso usare un conda env in heroku 
giusto?

2) Se volessi spostare una libreria dall'ambiente conda alla cartella locale 
del progetto c'è un modo per farlo? come posso fare a importare OCC in modo 
corretto?

3) Ho provato a copiare la cartella OCC da conda in locale e cambiare tutti gli 
import per far puntare alla nuova cartella ma ottengo "segfault". Ipotizzo che 
sia dovuto al fatto che è un porting da C++. Idee?

4) avete altri suggerimenti?

E' la mia prima flask app un po' articolata e non sono molto esperto.

Grazie per ogni aiuto.

Ciao

Matteo 

   
 



_______________________________________________

Python mailing list

Python@lists.python.it

https://lists.python.it/mailman/listinfo/python
_______________________________________________
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python

Rispondere a