Python

j’ai encore une question python

Sur le Pc que je prepare pour la CNC, j’ai un python 3.7 integre a la version de Linuxcnc 2.9.1 (debian 12). J’ai besoin de la 3.8 minimum si je veux profiter de la derniere version de bCNC (pour la shapeoko).

j’ai donc cherché sur le site python, et je n’ai trouvé qu’un tarfile python 3.12 sans expliquation pour l’installer.

la version 3.12 de python fonctionne si je la lance en full path.

mais bien sur si je lance le python par defaut.

image

j’ai cherché pendant des heures comment faire que python3 pointe vers la version 3.12 sans resultat, il y a des centaines de pages de doc, mais aucune que j’ai trouvé expliquant cela. Pouvez vous m’aider?

Sinon pour le moment, j’ai récupéré l’ancienne version de bCNC qui tourne aujourd’hui sur la shapeoko qui elle se contente de python 3.7

Bizarre… d’après Debian -- Details of package python3 in bookworm , la version de python pour Debian 12 (Bookworm) serait la 3.11

Tu es sur et certain de la Debian installée?

Les versions ‹ officielles › sont présentées sur Python - Debian Wiki

J’en déduis que cette version de python a été déployée avec Linuxcnc ‹ en installation externe › et pas en tant que package debian ?

Que dit un aptitude search python ?

(Je recommande pas pour le moment, mais si ça coince, au pire , tu peux tenter How To Install Python 3.11 on Debian 11/10 – TecAdmin)

Tu as raison , c’est un debian 10 buster. Je crois que je vais rester sur l’ancienne version de bCNC qui allait tres bien sur la shapeoko.

Avez vous regarder les variables d’environnement, $PATH, … ?
Il y a peut-être un lien symbolique pynthon3 sur ==> la version 3.7.3. En full path ça fonctionne du coup essayer de modifier le lien symbolique pour pointer sur la 3.12.0 /opt/Python-3.12.0/python.

Je pense que ça a déjà était vérifié :grinning: mais ça me permet de mettre un pied dans le groupe discrètement ! :slightly_smiling_face:

Pour revenir sur le changement de version Python qui peut être inintéressant dans le cas d’ajout de fonctionnalités sur des produits et donc un changement de version de Python impératif voici un sujet peut-être déjà étudié ???

Bonjour, Comme c’est Covid time, on s’occupe comme on peut.

Je souhaite faire un python qui récupère les attaches d’une piece a son brut dans un gcode et qui génère un autre gcode pour virer ces attaches.

étape 1 : J’ai demandé à chatgpt de m’extraire dans le gcode source les blocs interessants. Ce qu’il m’a fait à 80% en 30 secondes.

étape 2 : Je me suis dit, ah ah ah, il ne suffit plus que d’ajouter les blocs intermediares, c’est l’affaire de 5 minutes. Ca va jamais m’occuper pendant le covid cette affairel là. Et la j’y suis depuis des heures et je bloque sur une ligne de code. Meme chatgpt me dit que ce qui m’arrive n’existe pas.

Mon problème : A la ligne 60 du python
lines_finales.append(‹ G90 ›)

au lieu de m’ajouter une ligne de 3 caracteres, il m’ajoute 3 lignes de 1 caractere. Alors que plour les blocs principaux, je fais exactement pareil et ca marche parfaitement. Si quelqu’un peut y regarder …

Sortie du programma, on voit bien le G90 sur 3 lignes alors que le reste est bon

G
9
0
G0 X127.77634 Y179.34302 Z10.0
G3 X124.27084 Y179.49919 Z-3.5 I-3.77634 J-45.34302
G3 X121.27193 Y179.41814 I-0.27084 J-45.49919
G3 X117.77999 Y179.07285 Z-5.5 I2.72807 J-45.41814
G0 X16.90563 Y93.2697 Z10.0
G2 X17.4206 Y89.744 Z-3.5 I-16.90563 J-4.2697

Fichier gcode d’essai

porte_pack_biere.fond_troue.zip (1,4 Ko)

python

activate_this.zip (1,8 Ko)

C’est parce qu’à la fin tu parcours ce tableau avec 2 boucles :

segments = extraire_montée_descente(gcode_file)

# Afficher les segments extraits
for segment in segments:
    for line in segment:
        print(line)

Ton tableau de ligne est en fait un tableau de segments, qui eux mêmes contiennent des lignes. Donc il faudrait ajouter ton premier segment avec lines_finales.append(['G90']), ou alors faire que ce soit effectivement un tableau de ligne.

Oh punaise, merci Mike

Par contre pourquoi la syntaxe suivante n’a pas le meme probleme?
point_initial = « G0 X » + str(x_before) + " Y" + str(y_before) +" Z" + str(z_retract)
extracted_lines.append(point_initial)

Dans ces types de cas « nébuleux », j’applique personnellement la stratégie du candide (ou ravi de la crèche :rofl:), selon …
Que peut distinguer l’instruction C90 des autres lignes ?
C90 est seule, pas de paramètre associé
Pas d’espace après C90
Retour à la ligne immédiatement après le ‘0’
Peut-être une piste ???

Parce que tu ne l’ajoutes pas à lines_finales mais à extracted_lines qui est un tableau qui sera ensuite ajouté à lines_finales. Donc tu l’ajoutes bien à un « segment ».

Quel scoop :rofl:
Fr3 nous étonnera toujours !
Moi je continue à la nommer « Clermont Auvergne » avec le père Jouannet :wink::joy:

Et en plus le créateur est adhérent de l acollab

Oui c’est vrai !
Peut-être pour cela que nous étions au courant ?

C’est vrai, on ne le voit plus. C’est dommage car il avait de bonnes idées.