E' questo il pacchetto che devi installare [1]?

Guardando alle istruzione di installazione [2], non credo che sia
possibile create un file whl, quindi cercherei di risolvere la
compilazione del pacchetto dentro Heroku stesso.

[1] https://github.com/tpaviot/pythonocc-core
[2] https://github.com/tpaviot/pythonocc-core/blob/master/INSTALL.md


On 10.01.2023 09:50, Marco Giusti wrote:
Ciao Matteo,

provo ad aiutarti, ma non ho esperienza ne' con Heroku ne' con Conda.
Faccio qualche ipotesi che poi tocca a te verificare.

Le librerie scritte in C/C++ sono più complicate delle librerie in puro
python perché non sempre si ha un compilatore o tutte le dipendenze
disponibili. Inoltre il codice oggetto compilato non è generalmente
portabile da una macchina ad un'altra.

Il mio primo consiglio è di cercare di risolvere la compilazione di
pyOCC in Heroku, perché mi sembra di capire che hai un compilatore
disponibile. Posta l'output di pip quando installi la tua web app e
forse ti possiamo aiutare con quello.

Se compilare pyOCC in Heroku non è possibile, puoi provare a creare un
whl localmente di pyOCC e usare quello in Heroky. Anche se compilare i
file whl dovrebbero essere più portabili, fermo stante che la versione
dell'interprete e l'architettura siano le stesse. Sono quasi sicuro che
al momento dell'installazione puoi dire a pip dove andare a cercare i
pacchetti da installare.

Marco


On 09.01.2023 19:17, Perini Matteo 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