<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Général Python</title>
		<link>https://www.developpez.net/forums/</link>
		<description><![CDATA[Forum d'entraide sur les fondamentaux du langage Python, syntaxe, POO, bibliothèque standard, ...]]></description>
		<language>fr</language>
		<lastBuildDate>Wed, 03 Jun 2026 06:16:56 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - Général Python</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title><![CDATA[[Python 3.X] Tuple et liste [DEB]]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183463&amp;goto=newpost</link>
			<pubDate>Tue, 28 Apr 2026 19:53:01 GMT</pubDate>
			<description>Bonjour à tous , Comment...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous , Comment récupérer les éléments des tuples de cette liste un par un. Merci de m'avoir accordé de votre temps <br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br /></div></td><td valign="top"><pre style="margin: 0">friendships=<span class="br0">&#91;</span><span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>,<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>,<span style="color: #cc66cc;">2</span><span class="br0">&#41;</span>,<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">2</span><span class="br0">&#41;</span>,<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">3</span><span class="br0">&#41;</span>,<span class="br0">&#40;</span><span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">3</span><span class="br0">&#41;</span>,<span class="br0">&#40;</span><span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">4</span><span class="br0">&#41;</span>,
             <span class="br0">&#40;</span><span style="color: #cc66cc;">4</span>,<span style="color: #cc66cc;">5</span><span class="br0">&#41;</span>,<span class="br0">&#40;</span><span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">6</span><span class="br0">&#41;</span>,<span class="br0">&#40;</span><span style="color: #cc66cc;">5</span>,<span style="color: #cc66cc;">7</span><span class="br0">&#41;</span>,<span class="br0">&#40;</span><span style="color: #cc66cc;">6</span>,<span style="color: #cc66cc;">8</span><span class="br0">&#41;</span>,<span class="br0">&#40;</span><span style="color: #cc66cc;">7</span>,<span style="color: #cc66cc;">8</span><span class="br0">&#41;</span>,<span class="br0">&#40;</span><span style="color: #cc66cc;">8</span>,<span style="color: #cc66cc;">9</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
friendships<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span style="color: #cc66cc;">1</span><span class="br0">&#93;</span></pre></td></tr></table></code><hr />
</div>réponse 2<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
For i <span style="color: #0000ff;">in</span> friendships:
       <span style="color: #0000ff;">for</span>  j <span style="color: #0000ff;">in</span> range <span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>,<span style="color: #cc66cc;">3</span><span class="br0">&#41;</span>:
           <span style="color: #0000ff;">print</span><span class="br0">&#40;</span>friendships <span class="br0">&#91;</span>i<span class="br0">&#93;</span><span class="br0">&#91;</span>j<span class="br0">&#93;</span><span class="br0">&#41;</span></pre></td></tr></table></code><hr />
</div>réponse<br />
TypeError: list indices must be integers or slices, not tuple</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1155/autres-langages/python/general-python/">Général Python</category>
			<dc:creator>torquemada</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183463/autres-langages/python/general-python/tuple-liste-deb/</guid>
		</item>
		<item>
			<title>Optimisation de code</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183249&amp;goto=newpost</link>
			<pubDate>Thu, 16 Apr 2026 07:30:35 GMT</pubDate>
			<description><![CDATA[Bonjour, 
J'ai développé un...]]></description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
J'ai développé un outil pour générer des jeux de donnés fictives en python, l'objectif étant d'avoir des bases avec des données proches de ce qu'on pourrait trouver en prod en terme de volumétrie et respect de règles fonctionnelles mais avec des données complètement bidon pour ne pas avoir à me préoccuper des questions de confidentialité extrêmement présents dans ma branche. En outre, je n'ai pas besoin d'existant. Je peux créer des bases pour une application complètement nouvelle.<br />
<br />
J'ai construit cet outil au fur et à mesure de mes propres besoins et il commence à devenir suffisamment intéressant pour que j'essaie de l'optimiser un peu.<br />
<br />
L'idée de départ était d'avoir une moulinette très hautement paramétrable pour permettre une adaptation à toutes sortes de situations.<br />
<br />
<b><u>Présentation rapide du fonctionnement</u></b><br />
Je paramètre la structure d'alimentation de la base sous forme d'une arborescence yaml et, pour chaque table, je crée un fichier texte qui contient (en gros) des fonctions que le moteur appelle. Au démarrage de l'application, le mapping entre les champs et les fonctions est stocké dans des objets/dictionnaires (correspondant aux entités) puis le programme consiste en une imbrication de boucles qui décrivent l'arborescence paramétrée et appels des fonctions d'alimentation des champs.<br />
Les données de référence (valeurs et probabilités, principalement) sont stockées dans une ou plusieurs bases SQLite et les données de sorties sont également écrites dans une ou plusieurs bases SQLite (il est possible d'avoir des bases de travail pour écrire des données intermédiaires mais non souhaitées dans le résultat).<br />
Je peux facilement intégrer du hasard et des probabilités d'apparitions de valeurs respectant éventuellement des distributions plus ou moins gaussiennes.<br />
Tout cela fonctionne pas mal et, au final, pour créer une nouvelle base, c'est relativement rapide. Le gros du travail est dans le paramétrage. Je n'ai pas ou très peu de code à écrire (juste les fonctions qui manquent pour des cas spécifiques non encore rencontrés) et ça tourne bien.<br />
<br />
<b>Sauf qu'en terme de performance, je pense qu'il y a pas mal de marge de progression</b> (je génère environ 100 Mo/h).<br />
<br />
<b><u>La question</u></b><br />
Je serais intéressé par quelques avis d'orientation pour améliorer tout cela le plus efficacement possible avant de me lancer dans des expérimentations éventuellement très lourdes en terme d'investissement pour un retour nul ou quasi nul.<br />
<br />
Quelques réflexions :<br />
<br />
- Serait-il pertinent d'essayer de passer cette base de code en Cython. J'ai peur que ce soit difficile pour un résultat incertain car l'application est très dynamique : les fonctions appelées pour alimenter les champs des tables sont écrites dans les fichiers de paramétrage et les branchements se font à l'initialisation et à l'exécution, avec parfois un peu d'&quot;exec&quot; (la sécurité n'est pas une priorité : cette moulinette n'est pas censée être utilisée autrement que sur mon poste local). D'un autre côté, certaines fonctions ont des variables qui pourraient sans doute être typées de façon statiques. Je ne connais pas cython et en particulier le niveau de modification de code que cela implique pour un gain intéressant et j'ai donc du mal à mesurer l'intérêt de cette solution qui me semble la plus réaliste en terme de réécriture (j'avais pensé à tout réécrire en Rust mais là, le réalisme m'amène à penser que la marche est vraiment haute)<br />
<br />
- multiprocessing ? multithreading ? Ces options sont certainement prometteuses... La génération est un enchevêtrement de boucles qui décrit une arborescence. Les boucles filles sont, bien sûr, dépendantes de leurs parents mais à la racine, chaque tour est indépendant du précédent. On pourrait tout à fait scinder la génération en autant de morceaux à traiter en parallèle. Les questions sont relatives au fait que la (ou les) base(s) de référence (qui contient les valeurs et les probabilités à respecter), et la base de sortie sont, du coup, à partager entre les processus ou les threads. Est-ce une limite ? Faut-il prévoir une écriture dans autant de bases que de process/thread lancés avec réconciliation à la fin ? Quel est le plus adapté ? Intuitivement, je dirais que le multiprocessing serait bien pour éclater la boucle racine et le multithreading pour les écritures en base mais je ne vois pas trop comment concilier les deux. En fait, je ne vois pas très bien comment utiliser le multithreading dans ce cas...<br />
<br />
Merci pour vos éclairages.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1155/autres-langages/python/general-python/">Général Python</category>
			<dc:creator>fatbob</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183249/autres-langages/python/general-python/optimisation-code/</guid>
		</item>
		<item>
			<title><![CDATA[[Python 3.X] tout ce qui est def (ma_fonction) est incompatible avec fonctionnement du RANDOM?]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182831&amp;goto=newpost</link>
			<pubDate>Tue, 24 Mar 2026 00:40:33 GMT</pubDate>
			<description>Bonjour à tous, cette...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous, cette question est probablement idiote, cas échéant ou lequel, je demande l'indulgence du forum où je suis débutant, tout comme chez Python. Voici la question:<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
&gt;&gt;&gt; <span style="color: #0000ff;">def</span> mon_entier-au_hasard <span class="br0">&#40;</span><span class="br0">&#41;</span> :
...    <span style="color: #0000ff;">import</span> random
...    mon_entier_au_hasard = random.randint <span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1000000</span><span class="br0">&#41;</span>
...    <span style="color: #0000ff;">print</span> <span class="br0">&#40;</span>mon_entier_au_hasard<span class="br0">&#41;</span>
...</pre></td></tr></table></code><hr />
</div><br />
Donc aucun affichage, et si je veux voir ce que cache la variable créée, j'aurai ça:<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0">&gt;&gt;&gt; mon_entier_au_hasard
 &lt; function mon_entier_au_hasard at <span style="color: #cc66cc;">0x00720858</span>&gt;    <span style="color: #808080;"># apparemment, une simlple adresse o&ugrave; ma variable loge</span></pre></td></tr></table></code><hr />
</div><br />
Si je veux avoir des certitudes sur son type, je fais :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0">&gt;&gt;&gt; type (mon_entier_au_hasard)
&lt;class 'function'&gt;</pre></td></tr></table></code><hr />
</div><br />
Voilà donc ce que j'ai quand j'essaye piètrement de créer ma propre fonction. Alors que j'aimerais avoir ce que ce module offre au monde entier sans la moindre difficulté, c'est-à-dire ceci :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br /></div></td><td valign="top"><pre style="margin: 0">&gt;&gt;&gt; <span style="color: #0000ff;">import</span> random
&gt;&gt;&gt; r = random.randint <span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>, <span style="color: #cc66cc;">1000000</span><span class="br0">&#41;</span>
&gt;&gt;&gt; <span style="color: #0000ff;">print</span> <span class="br0">&#40;</span>r<span class="br0">&#41;</span>
<span style="color: #cc66cc;">14790</span></pre></td></tr></table></code><hr />
</div><br />
Je pense que j'ai une lacune dans la façon de procéder. Mais il se trouve, peut-être, que le module lui-même ne soit pas adapté à ce genre de création ? qu'il y ait un autre module qui gère l'aléatoire et qui est adapté à tout ce qui est &quot;def&quot;?<br />
Merci à tous pour la réponse pertinente.  Salutations + passablement honte des lacunes</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1155/autres-langages/python/general-python/">Général Python</category>
			<dc:creator>yaneya</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182831/autres-langages/python/general-python/def-ma_fonction-incompatible-fonctionnement-random/</guid>
		</item>
		<item>
			<title>Comment installer une version inférieur sur un Macbook M4</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182790&amp;goto=newpost</link>
			<pubDate>Fri, 20 Mar 2026 19:38:55 GMT</pubDate>
			<description>Bonjour, 
Je ne suis pas trop...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
Je ne suis pas trop expert.<br />
<br />
J'ai un nouveau macbook avec Python 3.14<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">python3 --version</code><hr />
</div>Python 3.14.3<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">which python3</code><hr />
</div>/opt/homebrew/bin/python3<br />
<br />
Dans mon dossier /Application, j'ai le dossier 'Python 3.14'<br />
<br />
Mais j'ai besoin de Python@3.13 et j'aimerais pouvoir sans trop de traca, passer de 3.13 à 3.14 même si resterai principalement avec 3.13<br />
<br />
Est-ce que je pourrais simplement télécharger le &quot;Mac OS Installer&quot; ici <a rel="nofollow" href="https://www.python.org/downloads/release/python-31312/" target="_blank">https://www.python.org/downloads/release/python-31312/</a> ?<br />
<br />
Je suppose que dans mon dossier /application, j'aurai un nouveau dossier Python 3.13.<br />
<br />
Mais comment choisir la version que je veux utiliser pour un cas ou pour un autre?<br />
<br />
Mercii</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1155/autres-langages/python/general-python/">Général Python</category>
			<dc:creator>pierrot10</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182790/autres-langages/python/general-python/installer-version-inferieur-macbook-m4/</guid>
		</item>
		<item>
			<title><![CDATA[Failed to build 'mysqlclient']]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182738&amp;goto=newpost</link>
			<pubDate>Wed, 18 Mar 2026 21:36:04 GMT</pubDate>
			<description>Bonjour à tous, 
 
Je...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
Je travaille avec un Macbook M4, WAMPP et j'essaye de créer une application avec Dajngo. C'est un travail qui a fonction sur mon précédent Macbook avec MAMP.<br />
<br />
Ma version de python est<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			Python 3.14.3<br />
pip:	pip 26.0.
			
		<hr />
	</div>
</div>1<br />
<br />
J'ai donc repris mes notes et je dois installer maintenant <br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span class="br0">&#40;</span>.env<span class="br0">&#41;</span> pip3 install mysqlclient</pre></td></tr></table></code><hr />
</div><br />
Malheureusement, je recois ce message d'erreur<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Citation:</div>
	<div class="bbcode_quote printable">
		<hr />
		
			Collecting mysqlclient<br />
  Using cached mysqlclient-2.2.8.tar.gz (92 kB)<br />
  Installing build dependencies ... done<br />
  Getting requirements to build wheel ... error<br />
  error: subprocess-exited-with-error<br />
<br />
  × Getting requirements to build wheel did not run successfully.<br />
  &#9474; exit code: 1<br />
  &#9584;&#9472;&gt; [31 lines of output]<br />
      Trying pkg-config --exists mysqlclient<br />
      Command 'pkg-config --exists mysqlclient' returned non-zero exit status 1.<br />
      Trying pkg-config --exists mariadb<br />
      Command 'pkg-config --exists mariadb' returned non-zero exit status 1.<br />
      Trying pkg-config --exists libmariadb<br />
      Command 'pkg-config --exists libmariadb' returned non-zero exit status 1.<br />
      Trying pkg-config --exists perconaserverclient<br />
      Command 'pkg-config --exists perconaserverclient' returned non-zero exit status 1.<br />
      Traceback (most recent call last):<br />
        File &quot;/Users/pierrot/Documents/Dev/Django/.env/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py&quot;, line 389, in &lt;module&gt;<br />
          main()<br />
          ~~~~^^<br />
        File &quot;/Users/pierrot/Documents/Dev/Django/.env/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py&quot;, line 373, in main<br />
          json_out[&quot;return_val&quot;] = hook(**hook_input[&quot;kwargs&quot;])<br />
                                   ~~~~^^^^^^^^^^^^^^^^^^^^^^^^<br />
        File &quot;/Users/pierrot/Documents/Dev/Django/.env/lib/python3.14/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py&quot;, line 143, in get_requires_for_build_wheel<br />
          return hook(config_settings)<br />
        File &quot;/private/var/folders/gn/52z_ssd50q7crrg399h9zl4m0000gn/T/pip-build-env-06go3obo/overlay/lib/python3.14/site-packages/setuptools/build_meta.py&quot;, line 333, in get_requires_for_build_wheel<br />
          return self._get_build_requires(config_settings, requirements=[])<br />
                 ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^<br />
        File &quot;/private/var/folders/gn/52z_ssd50q7crrg399h9zl4m0000gn/T/pip-build-env-06go3obo/overlay/lib/python3.14/site-packages/setuptools/build_meta.py&quot;, line 301, in _get_build_requires<br />
          self.run_setup()<br />
          ~~~~~~~~~~~~~~^^<br />
        File &quot;/private/var/folders/gn/52z_ssd50q7crrg399h9zl4m0000gn/T/pip-build-env-06go3obo/overlay/lib/python3.14/site-packages/setuptools/build_meta.py&quot;, line 317, in run_setup<br />
          exec(code, locals())<br />
          ~~~~^^^^^^^^^^^^^^^^<br />
        File &quot;&lt;string&gt;&quot;, line 156, in &lt;module&gt;<br />
        File &quot;&lt;string&gt;&quot;, line 49, in get_config_posix<br />
        File &quot;&lt;string&gt;&quot;, line 28, in find_package_name<br />
      Exception: Can not find valid pkg-config name.<br />
      Specify MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS env vars manually<br />
      [end of output]<br />
<br />
  note: This error originates from a subprocess, and is likely not a problem with pip.<br />
ERROR: Failed to build 'mysqlclient' when getting requirements to build wheel
			
		<hr />
	</div>
</div>Je ne comprends pas pourquoi j'ai ce message et je me demande si j'ai besoin d'un package supplémentaire pour que l'installation puisse terminer sans erreurs<br />
<br />
Est-ce que cela vous parle?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1155/autres-langages/python/general-python/">Général Python</category>
			<dc:creator>pierrot10</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182738/autres-langages/python/general-python/failed-to-build-mysqlclient/</guid>
		</item>
		<item>
			<title><![CDATA[[Python 3.X] xml.etree - recuperer une valeur si une propriété existe]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182727&amp;goto=newpost</link>
			<pubDate>Wed, 18 Mar 2026 13:27:39 GMT</pubDate>
			<description>Bonjour 
 
Pour un projet je...</description>
			<content:encoded><![CDATA[<div>Bonjour<br />
<br />
Pour un projet je suis en train de me mettre sur Python, et aussi sur xml.etree pour traiter des données d'un fichier xml.<br />
jusque la j'arrive bien a lire mon fichier xml, extraire les données dont j'ai besoin, et les mettre dans un fichier csv plus petit et plus facile a traiter pour la suite.<br />
<br />
les données concerne des données de nos agents (nom, prenoms, etc et pleins d'infos)<br />
<br />
par contre, j'ai une subtilité que j'avais pas vu, le Nom de Naissance pour les femmes mariées.<br />
<br />
par defaut j'ai une propriété <i><b>nom</b></i>, qui existe pour tout le monde, et qui concerne le nom d'usage.<br />
pour les femmes mariées, j'ai egalement une propriété <b><i>compnom</i></b>, qui est présente avec le nom de naissance, et uniquement si le nom d'usage est different.<br />
<br />
Comment puis-je faire pour : <br />
- tester si la valeur est présente<br />
- si oui, recuperer sa valeur ?<br />
<br />
mes donnée sont sous arborescence a peu pres classique et de la forme : <div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">&lt;propri&eacute;t&eacute; V=<span style="color: #FF0000;">&quot;valeur&quot;</span>/&gt;</code><hr />
</div>que je recupere en code sous la forme <div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">data.find<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;propri&eacute;t&eacute;&quot;</span><span class="br0">&#41;</span>.attrib<span class="br0">&#91;</span><span style="color: #FF0000;">&quot;V&quot;</span><span class="br0">&#93;</span></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1155/autres-langages/python/general-python/">Général Python</category>
			<dc:creator>Chico008</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182727/autres-langages/python/general-python/xml-etree-recuperer-propriete-existe/</guid>
		</item>
		<item>
			<title><![CDATA[[Python 3.X] [Buildozer] Transformer une application en APK]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182255&amp;goto=newpost</link>
			<pubDate>Sat, 21 Feb 2026 20:07:11 GMT</pubDate>
			<description><![CDATA[Bonjour, 
 
J'ai développé...]]></description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
J'ai développé une petite application en Python/Kivy qui fonctionne correctement sur mon pc et j'aimerai la transformer en APK pour la tester sur mon téléphone.<br />
<br />
J'ai suivi les explications données sur <a rel="nofollow" href="https://kivy.org/doc/stable/guide/packaging-android.html" target="_blank">internet</a> en apportant quelques modifications au fichier spec<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0">buildozer init
buildozer android debug deploy run</pre></td></tr></table></code><hr />
</div>la compilation se lance bien mais j'aboutis sur un message d'erreur que je n'arrive pas à débloquer<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">WARNING: pip <span style="color: #0000ff;">is</span> configured <span style="color: #0000ff;">with</span> locations that require TLS/SSL, however the ssl module <span style="color: #0000ff;">in</span> Python <span style="color: #0000ff;">is</span> <span style="color: #0000ff;">not</span> available.</code><hr />
</div>Un peu plus de détails ici<br />
<a rel="nofollow" href="https://bin.infini.fr/?ca46701fb0c9e998#Gejs77FGapPG8M39PfGY1kZUNN3YDgCLqtxGKo6pPrH2" target="_blank">https://bin.infini.fr/?ca46701fb0c9e...CLqtxGKo6pPrH2</a><br />
<br />
je suis preneur d'un coup de main<br />
<br />
merci</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1155/autres-langages/python/general-python/">Général Python</category>
			<dc:creator>toitoinebzh</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182255/autres-langages/python/general-python/buildozer-transformer-application-apk/</guid>
		</item>
		<item>
			<title><![CDATA[[Python 3.X] Programme qui permet de rassembler plusieurs fichiers excel en un seul]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182209&amp;goto=newpost</link>
			<pubDate>Thu, 19 Feb 2026 14:19:12 GMT</pubDate>
			<description>Bonjour, 
 
Je ne suis...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je ne suis toujours pas très à l'aise avec Python et en programmation généralement. Je travaille pour une association qui fait des collecte dans les magasins et pour les enregistrement de bénévoles j'utilise doodle basique pour les enregistrements de bénévoles.<br />
Depuis mon dash board doodle j'extrais les rapport excel pour chaque doodle magasin que j'ai créé. Hebdomadairement j'envoie un récap donc ces fichiers pour chaque responsable collecte magasin.<br />
Je voudrai rassembler tous les fichiers excel dans un seul sous forms d'onglets (donc par magasin) ceci afin de faciliter l'envoi mais aussi l'utilisation par les responsables.<br />
Exemple (les chiffres étant le nom magasin pour l'exemple):<br />
<br />
Collecte1.xls<br />
Collecte 2.xls<br />
.....<br />
Collecte 30.xls<br />
<br />
à mettre dans un fichier général: Collecte2026.xls (avec les onglets collecte1, collecte2, .... , collecte 30)<br />
<br />
Merci pour votre aide très apprécié par moi mais surtout pour l'association. :)</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1155/autres-langages/python/general-python/">Général Python</category>
			<dc:creator>Dingobec</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182209/autres-langages/python/general-python/programme-permet-rassembler-plusieurs-fichiers-excel-seul/</guid>
		</item>
		<item>
			<title><![CDATA[[Python 3.X] chaine python - caractère d'échappement - comparaison]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181843&amp;goto=newpost</link>
			<pubDate>Sat, 31 Jan 2026 22:46:39 GMT</pubDate>
			<description>Bonjour à tous,  
 
Le...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous, <br />
<br />
Le problème suivant me semble élémentaire et pourtant je cale.<br />
Si je regarde les 2 chaines suivantes :<br />
a= &quot;Lorsqu'un fruit est éliminé&quot;<br />
b= &quot;Lorsqu\'un fruit est éliminé&quot;<br />
Pourquoi b affiche t'il les caractères d'échappement et pas a ?<br />
Comment puis-je forcer a à faire de même ? En fait, j'ai besoin d'effectuer des comparaisons sur ces chaines et pour cela il faut qu'elles soient d'un format identique et que le format affiche également les retours à la ligne.<br />
J'ai bien essayé  les fonctions str() et repr() mais sans résultat. <br />
<br />
Merci :coucou:</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1155/autres-langages/python/general-python/">Général Python</category>
			<dc:creator>Chris33</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181843/autres-langages/python/general-python/chaine-python-caractere-d-echappement-comparaison/</guid>
		</item>
		<item>
			<title><![CDATA[[Python 3.X] Boucles imbriquées particulières]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181834&amp;goto=newpost</link>
			<pubDate>Sat, 31 Jan 2026 15:26:14 GMT</pubDate>
			<description>Bonjour 
 
Je cherche à faire...</description>
			<content:encoded><![CDATA[<div>Bonjour<br />
<br />
Je cherche à faire des boucles imbriquées à partir d'un tableau d'indices. <br />
Un exemple vaut mieux qu'un long discours:<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
ind = <span class="br0">&#91;</span><span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">2</span>,<span style="color: #cc66cc;">3</span>,<span style="color: #cc66cc;">6</span><span class="br0">&#93;</span>
<span style="color: #0000ff;">for</span> i <span style="color: #0000ff;">in</span> range<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span>, ind<span class="br0">&#91;</span><span style="color: #cc66cc;">0</span><span class="br0">&#93;</span>+<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>:
    <span style="color: #0000ff;">for</span> j <span style="color: #0000ff;">in</span> range<span class="br0">&#40;</span>i, ind<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span><span class="br0">&#93;</span>+<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>:
        <span style="color: #0000ff;">for</span> k <span style="color: #0000ff;">in</span> range<span class="br0">&#40;</span>j, ind<span class="br0">&#91;</span><span style="color: #cc66cc;">2</span><span class="br0">&#93;</span>+<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>:
            <span style="color: #0000ff;">for</span> l <span style="color: #0000ff;">in</span> range<span class="br0">&#40;</span>k, ind<span class="br0">&#91;</span><span style="color: #cc66cc;">3</span><span class="br0">&#93;</span>+<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>:
                 ...</pre></td></tr></table></code><hr />
</div>Le problème est que ind est de longueur variable. Il peut y avoir plus d'éléments. <br />
Je ne trouve pas mon bonheur dans le module itertools (à cause des boucles qui démarre sur l'indice précédent et non à partir d'un nombre fixe).<br />
<br />
Quelqu'un sait si je peux faire ce genre de boucles imbriquées sans savoir à l'avance le nombre imbrications ?<br />
<br />
Merci d'avance<br />
<br />
PS : Je peux faire ça avec des combinaisons et en éliminant les p-uplets qui ne correspondent pas. Mais c'est trop lent.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1155/autres-langages/python/general-python/">Général Python</category>
			<dc:creator>Sisbai</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181834/autres-langages/python/general-python/boucles-imbriquees-particulieres/</guid>
		</item>
		<item>
			<title><![CDATA[[Python 3.X] Installe scikit-learn sous PyCharm]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181773&amp;goto=newpost</link>
			<pubDate>Wed, 28 Jan 2026 09:54:23 GMT</pubDate>
			<description>Bonjour, 
 
Sous PyCharm,...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Sous PyCharm, j'ai crée mon environnement virtuel, j'installe le package scikit-learn via pip.<br />
Quand je vais dans le répertoire site-packages, j'ai bine le répertoire sklearn.<br />
<br />
Mais dans mon script, , je déclare :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><span style="color: #0000ff;">from</span> sklearn.model_selection <span style="color: #0000ff;">import</span> train_test_split</code><hr />
</div>J'ai l'erreur :<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
Traceback <span class="br0">&#40;</span>most recent call last<span class="br0">&#41;</span>:
  File <span style="color: #FF0000;">&quot;C:\Nicolas\dev\python\sklearn.py&quot;</span>, line <span style="color: #cc66cc;">11</span>, <span style="color: #0000ff;">in</span> &lt;module&gt;
    <span style="color: #0000ff;">from</span> sklearn.model_selection <span style="color: #0000ff;">import</span> train_test_split
  File <span style="color: #FF0000;">&quot;C:\Nicolas\dev\python\sklearn.py&quot;</span>, line <span style="color: #cc66cc;">11</span>, <span style="color: #0000ff;">in</span> &lt;module&gt;
    <span style="color: #0000ff;">from</span> sklearn.model_selection <span style="color: #0000ff;">import</span> train_test_split
ModuleNotFoundError: No module named <span style="color: #FF0000;">'sklearn.model_selection'</span>; <span style="color: #FF0000;">'sklearn'</span> <span style="color: #0000ff;">is</span> <span style="color: #0000ff;">not</span> a package</pre></td></tr></table></code><hr />
</div>Qu'est ce qui cloche ?<br />
Merci,<br />
<br />
Nico</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1155/autres-langages/python/general-python/">Général Python</category>
			<dc:creator>DiverSIG</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181773/autres-langages/python/general-python/installe-scikit-learn-sous-pycharm/</guid>
		</item>
		<item>
			<title><![CDATA[[Python 3.X] récupérer les infos d'une video]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181737&amp;goto=newpost</link>
			<pubDate>Mon, 26 Jan 2026 16:45:15 GMT</pubDate>
			<description>Bonjour, 
 
Je cherche à...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je cherche à récupérer les infos concernant un fichier video (mp4 ou avi), avec la librairie opencv.<br />
<br />
je récupère bien la taille du frame, le nombre d'images par secondes, ....<br />
<br />
Je n'arrive pas à récupérer le type de video (mp4, avi, mkv, ...), quelle est la fonction qui permet ça ?<br />
<br />
Et comment récupérer l'image qui sert de thumbnail à la video ? <br />
<br />
<br />
Merci,<br />
<br />
Nico</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1155/autres-langages/python/general-python/">Général Python</category>
			<dc:creator>DiverSIG</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181737/autres-langages/python/general-python/recuperer-infos-d-video/</guid>
		</item>
		<item>
			<title>Activité du forum Python</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181700&amp;goto=newpost</link>
			<pubDate>Sat, 24 Jan 2026 09:16:13 GMT</pubDate>
			<description>Bonjour à tous 
 
Je suis...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous<br />
<br />
Je suis très étonné de voir avec quelle rapidité ce forum Python est devenu désert! Qu'est-ce qui se passe? <br />
<br />
Pourtant, Python est toujours un langage courant. Mais tout le monde le connait tellement bien qu'il n 'y a plus aucune question le concernant? <br />
<br />
<b><i>Quelqu'un a-t-il une raison pour expliquer cette désaffection ?</i></b></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1155/autres-langages/python/general-python/">Général Python</category>
			<dc:creator>tyrtamos</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181700/autres-langages/python/general-python/activite-forum-python/</guid>
		</item>
		<item>
			<title>Créer des variable/objet</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181381&amp;goto=newpost</link>
			<pubDate>Thu, 08 Jan 2026 12:53:05 GMT</pubDate>
			<description>Bonjour, je débute sur python...</description>
			<content:encoded><![CDATA[<div>Bonjour, je débute sur python et j'essaie de me familiariser avec les classe et je me demande si c'est possible de créer des objet de manière dynamique par exemple : j'essaie de créer une fonction permettant à l'utilisateur de créer un nombre arbitraire de joueur pour un jeu. j'ai essayer de le faire avec une boucle for et un input de l'utilisateur pour le nombre de joueur mais maintenant je suis bloqué car je ne sais pas si c'est possible de créer des variable. voici mon code : <br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br /></div></td><td valign="top"><pre style="margin: 0">nb_player = int<span class="br0">&#40;</span>input<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;combien de joueur&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
<span style="color: #0000ff;">for</span> i <span style="color: #0000ff;">in</span> range<span class="br0">&#40;</span><span style="color: #cc66cc;">0</span>,nb_player<span class="br0">&#41;</span>:
    name= input<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;non du joueur{}&quot;</span>.format<span class="br0">&#40;</span>i+<span style="color: #cc66cc;">1</span><span class="br0">&#41;</span><span class="br0">&#41;</span></pre></td></tr></table></code><hr />
</div></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1155/autres-langages/python/general-python/">Général Python</category>
			<dc:creator>L4B-TFS</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181381/autres-langages/python/general-python/creer-variable-objet/</guid>
		</item>
		<item>
			<title>Convertir batchfile .bat pour démarer python avec ses librairies en un équivalent qui serait accepté par MAC</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181167&amp;goto=newpost</link>
			<pubDate>Fri, 26 Dec 2025 13:18:20 GMT</pubDate>
			<description>Pour lancer une application...</description>
			<content:encoded><![CDATA[<div>Pour lancer une application python j'utilise Visual Studio sans environnement particulier.<br />
Ceci fonctionne.<br />
<u>J’appelle alors dans le code pour installer les librairies manquantes</u> ( si le 1er paramètre du soft n'est pas &quot;NICO_BAT_Mode&quot;):<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
&#133;
&nbsp;
    N = len<span class="br0">&#40;</span>sys.argv<span class="br0">&#41;</span>
    <span style="color: #808080;">#print ('N  :',N, sys.argv[0])# C:\...\main_ML.py</span>
    <span style="color: #0000ff;">if</span> N &gt; <span style="color: #cc66cc;">1</span>:
        A=sys.argv<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span><span class="br0">&#93;</span>
        <span style="color: #808080;">#print ('A  :',A)# C:\...\main_ML.py</span>
        <span style="color: #0000ff;">if</span> A == <span style="color: #FF0000;">'NICO_BAT_Mode'</span>:  <span style="color: #808080;"># first choosed argument in batch file</span>
            General_ML.From_BAT_File =  <span style="color: #339933;">True</span> <span style="color: #808080;"># in that case don't install libreries in main python area</span>
&nbsp;
&nbsp;
    <span style="color: #0000ff;">if</span> <span style="color: #0000ff;">not</span> General_ML.From_BAT_File:
        <span style="color: #0000ff;">from</span>    pip_version_checker   <span style="color: #0000ff;">import</span>  main_PIP_CHECK
        <span style="color: #0000ff;">from</span>    requirements_checker  <span style="color: #0000ff;">import</span> check_and_install_requirements
        <span style="color: #0000ff;">print</span><span class="br0">&#40;</span><span style="color: #FF0000;">'main_PIP_CHECK'</span><span class="br0">&#41;</span>
        main_PIP_CHECK<span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">print</span><span class="br0">&#40;</span><span style="color: #FF0000;">'Done'</span><span class="br0">&#41;</span>
&nbsp;
        <span style="color: #0000ff;">print</span><span class="br0">&#40;</span><span style="color: #FF0000;">'check_and_install_requirements'</span><span class="br0">&#41;</span>
        check_and_install_requirements<span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">print</span><span class="br0">&#40;</span><span style="color: #FF0000;">'Done'</span><span class="br0">&#41;</span></pre></td></tr></table></code><hr />
</div>Avec pour la mise à jour de pip:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="40"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br />84<br />85<br />86<br />87<br />88<br />89<br />90<br />91<br />92<br />93<br />94<br />95<br />96<br />97<br />98<br />99<br />100<br />101<br />102<br />103<br />104<br />105<br />106<br />107<br />108<br />109<br />110<br />111<br />112<br />113<br />114<br />115<br />116<br />117<br />118<br />119<br />120<br />121<br />122<br />123<br />124<br />125<br />126<br />127<br />128<br />129<br />130<br />131<br />132<br />133<br />134<br />135<br />136<br />137<br />138<br />139<br />140<br />141<br />142<br />143<br />144<br />145<br />146<br />147<br />148<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;"># pip_version_checker.py (Fixed)</span>
<span style="color: #FF0000;">&quot;&quot;&quot;</span>
<span style="color: #FF0000;">Pip Version Checker - Utility to check and update pip to latest version</span>
<span style="color: #FF0000;">&quot;&quot;&quot;</span>
<span style="color: #808080;">#=&gt; inform you must run this script with python 3 or above</span>
<span style="color: #808080;">#!/usr/bin/python3</span>
<span style="color: #808080;">#=&gt; inform we are usige an UTF-8 code ( otherwhise some chars such as &eacute;, &egrave;, .. could be wrongly displayed) </span>
<span style="color: #808080;"># -*- coding: utf-8 -*-</span>
&nbsp;
<span style="color: #0000ff;">import</span> subprocess
<span style="color: #0000ff;">import</span> sys
<span style="color: #0000ff;">import</span> re
<span style="color: #0000ff;">import</span> General_ML
&nbsp;
<span style="color: #0000ff;">def</span> PR<span class="br0">&#40;</span>st<span class="br0">&#41;</span>:
    General_ML.Preliminary_info.append<span class="br0">&#40;</span>st<span class="br0">&#41;</span>
    <span style="color: #0000ff;">print</span><span class="br0">&#40;</span>st<span class="br0">&#41;</span>
&nbsp;
<span style="color: #0000ff;">class</span> PipVersionChecker:
    <span style="color: #0000ff;">def</span> <span style="color: #0080ff;">__init__</span><span class="br0">&#40;</span>self<span class="br0">&#41;</span>:
        self.current_version = <span style="color: #339933;">None</span>
        self.latest_version = <span style="color: #339933;">None</span>
&nbsp;
    <span style="color: #0000ff;">def</span> get_current_pip_version<span class="br0">&#40;</span>self<span class="br0">&#41;</span>:
        <span style="color: #FF0000;">&quot;&quot;&quot;Get currently installed pip version&quot;&quot;&quot;</span>
        <span style="color: #0000ff;">try</span>:
            result = subprocess.run<span class="br0">&#40;</span><span class="br0">&#91;</span>sys.executable, <span style="color: #FF0000;">&quot;-m&quot;</span>, <span style="color: #FF0000;">&quot;pip&quot;</span>, <span style="color: #FF0000;">&quot;--version&quot;</span><span class="br0">&#93;</span>, 
                                  capture_output=<span style="color: #339933;">True</span>, text=<span style="color: #339933;">True</span>, check=<span style="color: #339933;">True</span><span class="br0">&#41;</span>
&nbsp;
            <span style="color: #808080;"># Extract version from output like &quot;pip 21.3.1 from ...&quot;</span>
            match = re.search<span class="br0">&#40;</span>r<span style="color: #FF0000;">'pip\s+([\d.]+)'</span>, result.stdout<span class="br0">&#41;</span>
            <span style="color: #0000ff;">if</span> match:
                self.current_version = match.group<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
                <span style="color: #0000ff;">return</span> self.current_version
            <span style="color: #0000ff;">else</span>:
                <span style="color: #0000ff;">return</span> <span style="color: #339933;">None</span>
&nbsp;
        <span style="color: #0000ff;">except</span> <span class="br0">&#40;</span>subprocess.CalledProcessError, FileNotFoundError<span class="br0">&#41;</span>:
            <span style="color: #0000ff;">return</span> <span style="color: #339933;">None</span>
&nbsp;
    <span style="color: #0000ff;">def</span> get_latest_pip_version<span class="br0">&#40;</span>self<span class="br0">&#41;</span>:
        <span style="color: #FF0000;">&quot;&quot;&quot;Get latest available pip version from PyPI&quot;&quot;&quot;</span>
        <span style="color: #0000ff;">try</span>:
            <span style="color: #808080;"># Use pip index versions to get available versions</span>
            result = subprocess.run<span class="br0">&#40;</span><span class="br0">&#91;</span>sys.executable, <span style="color: #FF0000;">&quot;-m&quot;</span>, <span style="color: #FF0000;">&quot;pip&quot;</span>, <span style="color: #FF0000;">&quot;index&quot;</span>, <span style="color: #FF0000;">&quot;versions&quot;</span>, <span style="color: #FF0000;">&quot;pip&quot;</span><span class="br0">&#93;</span>, 
                                  capture_output=<span style="color: #339933;">True</span>, text=<span style="color: #339933;">True</span><span class="br0">&#41;</span>
&nbsp;
            <span style="color: #0000ff;">if</span> result.returncode == <span style="color: #cc66cc;">0</span>:
                <span style="color: #808080;"># Parse output to find latest version</span>
                <span style="color: #0000ff;">for</span> line <span style="color: #0000ff;">in</span> result.stdout.split<span class="br0">&#40;</span><span style="color: #FF0000;">'<span style="color: #800000;">\n</span>'</span><span class="br0">&#41;</span>:
                    <span style="color: #0000ff;">if</span> <span style="color: #FF0000;">'LATEST:'</span> <span style="color: #0000ff;">in</span> line:
                        match = re.search<span class="br0">&#40;</span>r<span style="color: #FF0000;">'LATEST:\s+([\d.]+)'</span>, line<span class="br0">&#41;</span>
                        <span style="color: #0000ff;">if</span> match:
                            self.latest_version = match.group<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
                            <span style="color: #0000ff;">return</span> self.latest_version
&nbsp;
            <span style="color: #808080;"># Fallback: try the old method</span>
            result = subprocess.run<span class="br0">&#40;</span><span class="br0">&#91;</span>sys.executable, <span style="color: #FF0000;">&quot;-m&quot;</span>, <span style="color: #FF0000;">&quot;pip&quot;</span>, <span style="color: #FF0000;">&quot;install&quot;</span>, <span style="color: #FF0000;">&quot;pip==999.0.0&quot;</span><span class="br0">&#93;</span>, 
                                  capture_output=<span style="color: #339933;">True</span>, text=<span style="color: #339933;">True</span><span class="br0">&#41;</span>
&nbsp;
            <span style="color: #808080;"># Extract latest version from error message</span>
            <span style="color: #0000ff;">for</span> line <span style="color: #0000ff;">in</span> result.stderr.split<span class="br0">&#40;</span><span style="color: #FF0000;">'<span style="color: #800000;">\n</span>'</span><span class="br0">&#41;</span>:
                <span style="color: #0000ff;">if</span> <span style="color: #FF0000;">'from versions:'</span> <span style="color: #0000ff;">in</span> line:
                    versions_text = line.split<span class="br0">&#40;</span><span style="color: #FF0000;">'from versions:'</span><span class="br0">&#41;</span><span class="br0">&#91;</span>-<span style="color: #cc66cc;">1</span><span class="br0">&#93;</span>.split<span class="br0">&#40;</span><span style="color: #FF0000;">')'</span><span class="br0">&#41;</span><span class="br0">&#91;</span><span style="color: #cc66cc;">0</span><span class="br0">&#93;</span>
                    versions = <span class="br0">&#91;</span>v.strip<span class="br0">&#40;</span><span class="br0">&#41;</span> <span style="color: #0000ff;">for</span> v <span style="color: #0000ff;">in</span> versions_text.split<span class="br0">&#40;</span><span style="color: #FF0000;">','</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
                    <span style="color: #0000ff;">if</span> versions:
                        self.latest_version = versions<span class="br0">&#91;</span>-<span style="color: #cc66cc;">1</span><span class="br0">&#93;</span>  <span style="color: #808080;"># Last version is usually latest</span>
                        <span style="color: #0000ff;">return</span> self.latest_version
&nbsp;
            <span style="color: #0000ff;">return</span> <span style="color: #339933;">None</span>
&nbsp;
        <span style="color: #0000ff;">except</span> subprocess.CalledProcessError:
            <span style="color: #0000ff;">return</span> <span style="color: #339933;">None</span>
&nbsp;
    <span style="color: #0000ff;">def</span> compare_versions<span class="br0">&#40;</span>self, v1, v2<span class="br0">&#41;</span>:
        <span style="color: #FF0000;">&quot;&quot;&quot;Simple version comparison without external dependencies&quot;&quot;&quot;</span>
        <span style="color: #0000ff;">def</span> parse_version<span class="br0">&#40;</span>v<span class="br0">&#41;</span>:
            <span style="color: #0000ff;">return</span> <span class="br0">&#91;</span>int<span class="br0">&#40;</span>x<span class="br0">&#41;</span> <span style="color: #0000ff;">for</span> x <span style="color: #0000ff;">in</span> v.split<span class="br0">&#40;</span><span style="color: #FF0000;">'.'</span><span class="br0">&#41;</span><span class="br0">&#93;</span>
&nbsp;
        <span style="color: #0000ff;">try</span>:
            v1_parts = parse_version<span class="br0">&#40;</span>v1<span class="br0">&#41;</span>
            v2_parts = parse_version<span class="br0">&#40;</span>v2<span class="br0">&#41;</span>
&nbsp;
            <span style="color: #808080;"># Pad with zeros if different length</span>
            max_len = max<span class="br0">&#40;</span>len<span class="br0">&#40;</span>v1_parts<span class="br0">&#41;</span>, len<span class="br0">&#40;</span>v2_parts<span class="br0">&#41;</span><span class="br0">&#41;</span>
            v1_parts.extend<span class="br0">&#40;</span><span class="br0">&#91;</span><span style="color: #cc66cc;">0</span><span class="br0">&#93;</span> * <span class="br0">&#40;</span>max_len - len<span class="br0">&#40;</span>v1_parts<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
            v2_parts.extend<span class="br0">&#40;</span><span class="br0">&#91;</span><span style="color: #cc66cc;">0</span><span class="br0">&#93;</span> * <span class="br0">&#40;</span>max_len - len<span class="br0">&#40;</span>v2_parts<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
&nbsp;
            <span style="color: #0000ff;">return</span> v1_parts &lt; v2_parts
        <span style="color: #0000ff;">except</span>:
            <span style="color: #0000ff;">return</span> <span style="color: #339933;">False</span>
&nbsp;
    <span style="color: #0000ff;">def</span> is_update_needed<span class="br0">&#40;</span>self<span class="br0">&#41;</span>:
        <span style="color: #FF0000;">&quot;&quot;&quot;Check if pip update is needed&quot;&quot;&quot;</span>
        current = self.get_current_pip_version<span class="br0">&#40;</span><span class="br0">&#41;</span>
        latest = self.get_latest_pip_version<span class="br0">&#40;</span><span class="br0">&#41;</span>
&nbsp;
        <span style="color: #0000ff;">if</span> <span style="color: #0000ff;">not</span> current <span style="color: #0000ff;">or</span> <span style="color: #0000ff;">not</span> latest:
            <span style="color: #0000ff;">return</span> <span style="color: #339933;">False</span>, latest
&nbsp;
        <span style="color: #0000ff;">return</span> self.compare_versions<span class="br0">&#40;</span>current, latest<span class="br0">&#41;</span>, latest
&nbsp;
    <span style="color: #0000ff;">def</span> update_pip<span class="br0">&#40;</span>self<span class="br0">&#41;</span>:
        <span style="color: #FF0000;">&quot;&quot;&quot;Update pip to latest version&quot;&quot;&quot;</span>
        <span style="color: #0000ff;">try</span>:
            PR<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Updating pip to latest version...&quot;</span><span class="br0">&#41;</span>
            subprocess.run<span class="br0">&#40;</span><span class="br0">&#91;</span>sys.executable, <span style="color: #FF0000;">&quot;-m&quot;</span>, <span style="color: #FF0000;">&quot;pip&quot;</span>, <span style="color: #FF0000;">&quot;install&quot;</span>, <span style="color: #FF0000;">&quot;--upgrade&quot;</span>, <span style="color: #FF0000;">&quot;pip&quot;</span><span class="br0">&#93;</span>, 
                         check=<span style="color: #339933;">True</span>, capture_output=<span style="color: #339933;">True</span><span class="br0">&#41;</span>
            PR<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;pip updated successfully!&quot;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">return</span> <span style="color: #339933;">True</span>
        <span style="color: #0000ff;">except</span> subprocess.CalledProcessError <span style="color: #0000ff;">as</span> e:
            PR<span class="br0">&#40;</span>f<span style="color: #FF0000;">&quot;Failed to update pip: {e}&quot;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">return</span> <span style="color: #339933;">False</span>
&nbsp;
    <span style="color: #0000ff;">def</span> check_and_update<span class="br0">&#40;</span>self<span class="br0">&#41;</span>:
        <span style="color: #FF0000;">&quot;&quot;&quot;Main method to check and update pip if needed&quot;&quot;&quot;</span>
        PR<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Checking pip version...&quot;</span><span class="br0">&#41;</span>
&nbsp;
        current = self.get_current_pip_version<span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">if</span> <span style="color: #0000ff;">not</span> current:
            PR<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Could not determine current pip version&quot;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">return</span> <span style="color: #339933;">False</span>
&nbsp;
        PR<span class="br0">&#40;</span>f<span style="color: #FF0000;">&quot;Current pip version: {current}&quot;</span><span class="br0">&#41;</span>
&nbsp;
        <span style="color: #FF0000;">'''</span>
<span style="color: #FF0000;">&nbsp; &nbsp; &nbsp; &nbsp; </span>
<span style="color: #FF0000;">&nbsp; &nbsp; &nbsp; &nbsp; latest = self.get_latest_pip_version<span class="br0">&#40;</span><span class="br0">&#41;</span></span>
<span style="color: #FF0000;">&nbsp; &nbsp; &nbsp; &nbsp; if not latest:</span>
<span style="color: #FF0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PR<span class="br0">&#40;</span>&quot;Could not determine latest pip version&quot;<span class="br0">&#41;</span></span>
<span style="color: #FF0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return False</span>
<span style="color: #FF0000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span>
<span style="color: #FF0000;">&nbsp; &nbsp; &nbsp; &nbsp; PR<span class="br0">&#40;</span>f&quot;Latest pip version: <span class="br0">&#123;</span>latest<span class="br0">&#125;</span>&quot;<span class="br0">&#41;</span></span>
<span style="color: #FF0000;">&nbsp; &nbsp; &nbsp; &nbsp; '''</span>
        OK, latest = self.is_update_needed<span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">if</span> OK:
            PR<span class="br0">&#40;</span>f<span style="color: #FF0000;">&quot;Update available: {current} -&gt; {latest}&quot;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">return</span> self.update_pip<span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">else</span>:
            PR<span class="br0">&#40;</span>f<span style="color: #FF0000;">&quot;Latest pip version: {latest}&quot;</span><span class="br0">&#41;</span>
            PR<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Your pip is already up to date!&quot;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">return</span> <span style="color: #339933;">True</span>
&nbsp;
<span style="color: #0000ff;">def</span> main_PIP_CHECK<span class="br0">&#40;</span><span class="br0">&#41;</span>:  <span style="color: #808080;"># renom&eacute;. Main un peu dangereux. Il peut y avoir des risques de confusion</span>
    <span style="color: #FF0000;">&quot;&quot;&quot;Standalone pip version checker&quot;&quot;&quot;</span>
    checker = PipVersionChecker<span class="br0">&#40;</span><span class="br0">&#41;</span>
    checker.check_and_update<span class="br0">&#40;</span><span class="br0">&#41;</span></pre></td></tr></table></code><hr />
</div><u>Et pour la mise à jour des librairies</u><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br />44<br />45<br />46<br />47<br />48<br />49<br />50<br />51<br />52<br />53<br />54<br />55<br />56<br />57<br />58<br />59<br />60<br />61<br />62<br />63<br />64<br />65<br />66<br />67<br />68<br />69<br />70<br />71<br />72<br />73<br />74<br />75<br />76<br />77<br />78<br />79<br />80<br />81<br />82<br />83<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;"># requirements_checker.py (New - Simple dependency checker)</span>
<span style="color: #FF0000;">&quot;&quot;&quot;</span>
<span style="color: #FF0000;">Simple requirements checker without external dependencies</span>
<span style="color: #FF0000;">&quot;&quot;&quot;</span>
<span style="color: #808080;">#=&gt; inform you must run this script with python 3 or above</span>
<span style="color: #808080;">#!/usr/bin/python3</span>
<span style="color: #808080;">#=&gt; inform we are usige an UTF-8 code ( otherwhise some chars such as &eacute;, &egrave;, .. could be wrongly displayed) </span>
<span style="color: #808080;"># -*- coding: utf-8 -*-</span>
&nbsp;
<span style="color: #0000ff;">import</span>      subprocess
<span style="color: #0000ff;">import</span>      sys
<span style="color: #0000ff;">import</span>      os
<span style="color: #0000ff;">import</span>      General_ML
&nbsp;
<span style="color: #0000ff;">def</span> check_and_install_requirements<span class="br0">&#40;</span><span class="br0">&#41;</span>:
    <span style="color: #FF0000;">&quot;&quot;&quot;Check and install required packages&quot;&quot;&quot;</span>
    requirements = <span class="br0">&#123;</span>
        <span style="color: #FF0000;">'yfinance'</span>: <span style="color: #FF0000;">'yfinance'</span>,
        <span style="color: #FF0000;">'pandas'</span>: <span style="color: #FF0000;">'pandas'</span>, 
        <span style="color: #FF0000;">'fpdf'</span>:<span style="color: #FF0000;">'fpdf'</span>,
        <span style="color: #FF0000;">'numpy'</span>: <span style="color: #FF0000;">'numpy'</span>,
        <span style="color: #FF0000;">'scipy'</span>: <span style="color: #FF0000;">'scipy'</span>,
        <span style="color: #FF0000;">'matplotlib'</span>: <span style="color: #FF0000;">'matplotlib'</span>,
        <span style="color: #FF0000;">'sklearn'</span>: <span style="color: #FF0000;">'sklearn'</span>,
        <span style="color: #808080;">#'scikit-learn': 'scikit-learn',</span>
        <span style="color: #FF0000;">'plotly'</span>: <span style="color: #FF0000;">'plotly'</span>,
        <span style="color: #FF0000;">'seaborn'</span>: <span style="color: #FF0000;">'seaborn'</span>,<span style="color: #808080;"># jamais Utilis&eacute;???</span>
        <span style="color: #FF0000;">'tkinter'</span>: <span style="color: #FF0000;">'tkinter'</span>  <span style="color: #808080;"># Usually comes with Python     pip install scikit-learn</span>
&nbsp;
    <span class="br0">&#125;</span>
    <span style="color: #FF0000;">'''</span>
<span style="color: #FF0000;">&nbsp; &nbsp; &nbsp; &nbsp; Le module shutil fait partie de la biblioth&egrave;que standard de Python, </span>
<span style="color: #FF0000;">&nbsp; &nbsp; &nbsp; &nbsp; ce qui signifie qu'il est inclus par d&eacute;faut lors de l'installation de Python . =&gt;</span>
<span style="color: #FF0000;">&nbsp; &nbsp; &nbsp; &nbsp; inutile de le mettre dans la liste ci-dessus</span>
<span style="color: #FF0000;">&nbsp; &nbsp; '''</span>
&nbsp;
    General_ML.Preliminary_info.append<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Checking dependencies...&quot;</span><span class="br0">&#41;</span>
&nbsp;
    General_ML.Preliminary_info.append<span class="br0">&#40;</span><span style="color: #FF0000;">&quot;Checking dependencies...&quot;</span><span class="br0">&#41;</span>
    SAP = os.getenv<span class="br0">&#40;</span><span style="color: #FF0000;">'SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL'</span><span class="br0">&#41;</span>
&nbsp;
    os.environ<span class="br0">&#91;</span><span style="color: #FF0000;">&quot;SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL&quot;</span><span class="br0">&#93;</span> = <span style="color: #FF0000;">'True'</span>
&nbsp;
&nbsp;
    <span style="color: #0000ff;">for</span> package, install_name <span style="color: #0000ff;">in</span> requirements.items<span class="br0">&#40;</span><span class="br0">&#41;</span>:
        <span style="color: #0000ff;">try</span>:
            <span style="color: #0000ff;">if</span> package == <span style="color: #FF0000;">'tkinter'</span>:
                <span style="color: #808080;"># tkinter is usually bundled with Python</span>
                <span style="color: #808080;">#import tkinter</span>
                General_ML.Preliminary_info.append<span class="br0">&#40;</span>f<span style="color: #FF0000;">&quot;&#10003; {package} is available&quot;</span><span class="br0">&#41;</span>
            <span style="color: #0000ff;">else</span>:
                <span style="color: #0080ff;">__import__</span><span class="br0">&#40;</span>package<span class="br0">&#41;</span>
                General_ML.Preliminary_info.append<span class="br0">&#40;</span>f<span style="color: #FF0000;">&quot;&#10003; {package} is available&quot;</span><span class="br0">&#41;</span>
        <span style="color: #0000ff;">except</span> ImportError:
            <span style="color: #0000ff;">if</span> install_name:
                General_ML.Preliminary_info.append<span class="br0">&#40;</span>f<span style="color: #FF0000;">&quot;&#10007; {package} not found. Installing...&quot;</span><span class="br0">&#41;</span>
                <span style="color: #0000ff;">try</span>:
                    subprocess.check_call<span class="br0">&#40;</span><span class="br0">&#91;</span>sys.executable, <span style="color: #FF0000;">&quot;-m&quot;</span>, <span style="color: #FF0000;">&quot;pip&quot;</span>, <span style="color: #FF0000;">&quot;install&quot;</span>,  install_name <span class="br0">&#93;</span><span class="br0">&#41;</span>
                    General_ML.Preliminary_info.append<span class="br0">&#40;</span>f<span style="color: #FF0000;">&quot;&#10003; {package} installed successfully&quot;</span><span class="br0">&#41;</span>
                    General_ML.Must_Restart            =  <span style="color: #339933;">True</span>
                <span style="color: #0000ff;">except</span> subprocess.CalledProcessError:
                    General_ML.Preliminary_info.append<span class="br0">&#40;</span>f<span style="color: #FF0000;">&quot;&#10007; Failed to install {package}&quot;</span><span class="br0">&#41;</span>
                <span style="color: #808080;"># end if install_name</span>
            <span style="color: #0000ff;">else</span>:
                General_ML.Preliminary_info.append<span class="br0">&#40;</span>f<span style="color: #FF0000;">&quot;&#10007; {package} is required but cannot be installed via pip&quot;</span><span class="br0">&#41;</span>
            <span style="color: #808080;">#end except ImportError:</span>
        <span style="color: #808080;"># end for package, install_name in requirements.items():</span>
&nbsp;
    <span style="color: #808080;">#python -m pip show scikit-learn &gt; scikitlearn.jpm123</span>
    result = subprocess.run<span class="br0">&#40;</span><span class="br0">&#91;</span>sys.executable, <span style="color: #FF0000;">&quot;-m&quot;</span>, <span style="color: #FF0000;">&quot;pip&quot;</span>,<span style="color: #FF0000;">&quot;show&quot;</span> ,<span style="color: #FF0000;">&quot;scikit-learn&quot;</span><span class="br0">&#93;</span>, capture_output=<span style="color: #339933;">True</span>, text=<span style="color: #339933;">True</span><span class="br0">&#41;</span>
&nbsp;
    a=len<span class="br0">&#40;</span>result.stdout<span class="br0">&#41;</span>
&nbsp;
    <span style="color: #0000ff;">if</span> a &lt; <span style="color: #cc66cc;">1</span>:
        subprocess.check_call<span class="br0">&#40;</span><span class="br0">&#91;</span>sys.executable, <span style="color: #FF0000;">&quot;-m&quot;</span>, <span style="color: #FF0000;">&quot;pip&quot;</span>, <span style="color: #FF0000;">&quot;install&quot;</span>,  <span style="color: #FF0000;">'scikit-learn'</span> <span class="br0">&#93;</span><span class="br0">&#41;</span>
        General_ML.Must_Restart            =  <span style="color: #339933;">True</span>
&nbsp;
    <span style="color: #0000ff;">if</span> SAP==<span style="color: #339933;">None</span>:
        os.environ.pop<span class="br0">&#40;</span><span style="color: #FF0000;">'SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL'</span><span class="br0">&#41;</span>
    <span style="color: #0000ff;">else</span>:
        os.environ<span class="br0">&#91;</span><span style="color: #FF0000;">&quot;SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL&quot;</span><span class="br0">&#93;</span> = SAP
    <span style="color: #808080;">#end check_and_install_requirements</span></pre></td></tr></table></code><hr />
</div>Bien entendu cela installe les librairies souhaitées dans l’environnement général de python.<br />
Pour utiliser un environnement dédicacé, sous window,<u> j’utiles alors la batch file (NICO.bat)</u> :<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
python -m venv Nicola__env
cd Nicola__env
cd scripts
call activate.bat
cd..
cd..
pip3 install scipy
pip3 install seaborn
pip3 install python-dateutil
pip3 install matplotlib
pip3 install scikit-learn
pip3 install fpdf
pip3 install pandas
pip3 install yfinance
pip3 install tk
pip3 install plotly
pip3 install seaborn
python main_ml.py NICO_BAT_Mode
cd Nicola__env
cd scripts
call deactivate.bat
cd..
cd..</pre></td></tr></table></code><hr />
</div><br />
Ici le passage du paramètre « NICO_BAT_Mode » au programme permet de ne plus installer les librairies dans l’environnement général. Cela fonctionne sans problème (apparent!)<br />
<br />
<br />
Maintenant j’aurais  besoin de <b><i><i>créer l’équivalent de NICO.bat si on lance un script (.sh ? .bash ? autre ?) pour pouvoir exécuter la série de commande sur un MAC </i></i></b>et non plus un PC-Window. <br />
Après avoir passé pas mal de temps, peut-être mal ciblé, je n'ai pas réussi à trouvrer une solution concluante.<br />
<br />
Ce que j'ai pu faire avec les infos trouvées est: (NICO . sh)<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;">#!/bin/bash</span>
python3 -m venv Nicola__env
source Nicola__env/bin/activate
rem ou pip3 ?
pip install scipy seaborn python-dateutil matplotlib scikit-learn fpdf pandas yfinance tk plotly
python main_ml.py NICO_BAT_Mode
deactivate
rm -rf Nicola__env</pre></td></tr></table></code><hr />
</div>Mais je n'ai aucun moyen de vérifier avant de transmettre,<br />
<br />
Je serais donc<b><i> infiniment reconnaissant à toutes personnes pouvant m’aider à effectuer une conversion de code  pouvant fonctionner sur un MAC</i></b>.<br />
<br />
Merci d’avance pour toute réponse et suggestion.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f1155/autres-langages/python/general-python/">Général Python</category>
			<dc:creator>j.p.mignot</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181167/autres-langages/python/general-python/convertir-batchfile-bat-demarer-python-librairies-equivalent-serait-accepte-mac/</guid>
		</item>
	</channel>
</rss>
