Installation d'une nouvelle instance

Bonjour la Communauté,

Je cherche à faire fonctionner “panoramax-api” sur une instance locale (sur Windows) avec une base de donnée locale (vierge) (PostgreSQL) et je suis coincé…

Je clone la branche main en local puis je lance un équivalent de la commande :
bin/run_production_api.sh (comme je suis sous Windows je passe par PowerShell),

et j’obtiens :

Exception: Geovisio database schema needs an update !

The following database migrations are required:
20221201_02_ZG8AR-camera-information,…

Please apply them using this command:
flask db upgrade

Donc pas de problème, j’exécute la commande :
python -m flask db upgrade

yoyo.migrations: Applying 20221201_02_ZG8AR-camera-information
yoyo.migrations: - applying step 0
Initializing cameras metadata…

File “…/geovisio/…/migrations/20221201_02_ZG8AR-camera-information.py”, line 38, in apply_step
with cursor.copy(“COPY cameras(model, sensor_width) FROM STDIN”) as copy:
^^^^^^^^^^^
AttributeError: ‘psycopg2.extensions.cursor’ object has no attribute ‘copy’

Besoin d’aide svp :pray:

Un problème avec le module psycopg2 de python… il faudrait vérifier sa version et la compatibilité des COPY depuis STDIN (un concept très Unixien).

Je doute très fort que des tests aient été faits sur Windows (ou sur Mac), je ne sais pas si nous ne devrions pas clairement indiquer que seul Linux est supporté.

oui, on n’a jamais testé sous windows.

Aprés, ce fichier n’est plus utile, est ce que tu peux essayer de commencer toutes les lignes de 36 à 41 et voir si les restes des migrations passent ?

Hello et merci pour vos réponses !

“commencer”, “commenter” plutôt les lignes 36 à 41 ?

Je m’exécute… Alors c’est passé jusqu’à :

yoyo.migrations: Applying 20240409_01_jnhra-pictures-grid
yoyo.migrations: - applying step 0

psycopg2.errors.UndefinedTable: relation “pictures” does not exist

J’imagine qu’il faut que je fasse qqchose de similaire ? J’ai peur de casser l’API…

oui, “commenter”, désolé :sweat_smile:

aie, il semble que tout le système de migration (pour créer les tables en base de données) ne fonctionne pas :frowning_face: . On ne supporte pas windows pour déployer une instance pour le moment, et je pense qu’il y a trop peu de personnes concernées pour que l’équipe travaille dessus :confused:

Tu n’as pas un serveur linux à disposition pour déployer l’instance ?

Hello ! Alors du coup j’essaie de déployer sur Amazon EC2 Linux, j’en suis à l’étape “pip3.12 install -e .”, il n’arrive pas à compiler Pillow :frowning:

Building wheels for collected packages: geovisio, Pillow
Building editable for geovisio (pyproject.toml) … done
Created wheel for geovisio: filename=geovisio-2.8.0-py3-none-any.whl size=3466 sha256=a7ffe0966f5cdb6e45e7927aa8cd0407bedc08d3d759f7c022956eb09b893eb9
Stored in directory: /tmp/pip-ephem-wheel-cache-ddjpp8go/wheels/92/9a/4d/2613c6d0af3674b5b163a5e9b6036854c27f6f8b8801e8bc5f
Building wheel for Pillow (pyproject.toml) … error
error: subprocess-exited-with-error

× Building wheel for Pillow (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [204 lines of output]
running bdist_wheel
running build
running build_py

File “/tmp/pip-build-env-cil5qo18/overlay/lib/python3.12/site-packages/setuptools/build_meta.py”, line 320, in run_setup
exec(code, locals())
File “”, line 1010, in
RequiredDependencyException:

  The headers or library files could not be found for zlib,
  a required dependency when compiling Pillow from source.
  
  Please see the install instructions at:
     https://pillow.readthedocs.io/en/latest/installation.html
  
  
  [end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for Pillow
Successfully built geovisio
Failed to build Pillow
ERROR: Failed to build installable wheels for some pyproject.toml based projects (Pillow)

l’erreur ne me dit rien, quel est le système sous jacent (et sa version) ?
Quelle est la version de python du système ?

une recherche me donne ca, c’est a apparemment pour des vielles versions de pip, il y a peu de chance que ca soit ton cas, mais tu peux essayer au cas où:

python -m pip install -U --force-reinstall pip

?

Attention aux mélanges python/python3 pip/pip3 si python-is-python3 n’est pas installé !

Pillow devrait s’installer sans build… et si les headers zlib ne sont pas déjà sur l’OS, c’est qu’il est vraiment très “vanilla”.

Bonjour !

Alors sur le Linux d’Amazon la commande “python” n’est pas disponible, seulement “python3” (3.9) et “python3.12” (3.12), j’ai cru comprendre qu’il n’y a que sous Windows où “python” est un alias vers la dernière version de Python ?

Donc la commande a fonctionné :

Mais celle-ci renvoie toujours une erreur sur Pillow / Wheel :

À quoi sert le wheel ?

Edit : je précise que sous Windows pas de problème pour compiler, juste que la migration de la base de données ne fonctionne pas

Normal, python c’est python 2.x et désormais obsolète.

Tu peux installer python-is-python3 pour que les commandes python et pip se fasse sur la version 3.x

Je ne connais pas cette distro Amazon, mais le gestionnaire de paquets semble être rpm et je n’ai aucune idée de ce qui est installé de base. Nous utilisons essentiellement Debian et parfois Ubuntu sur nos serveurs.

Je ne suis pas assez calé (pas du tout en fait) pour ce qui concerne le packaging python et donc wheel.

J’invoque… @PanierAvide en complément de @antoine-de … abracadabra !

Oui je l’ai installé python-is-python3, sauf que par défaut le python3 pointe vers la version 3.9 et geovisio requiert >= 3.10, c’est la raison pour laquelle j’ai installé la 3.12 et je suis obligé de lancer les commandes avec python3.12 explicitement… Je n’ai pas trouvé sur internet comment “désactiver” python3.9 et ne garder que python3.12 et faire en sorte que la commande python pointe vers python3.12.

J’ai essayé avec une image docker amazonlinx:latest

J’ai un test dans ce repository: antoine-de / panoramax_on_amazonlinux · GitLab avec l’api qui tourne, j’ai du installer :

yum install -y \
    zlib-devel.x86_64\
    python3.12-devel.x86_64\
    gcc\
    libjpeg-turbo-devel.x86_64\
    zlib-devel.x86_64\
    python3.12

(et bien utiliser la bonne version de python 3.12)