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